Skip to content

Commit 306061d

Browse files
Load recent repos and not all repos for BBS (#18861)
* getting recent repos instead of all repos * stale comment * wrap recent repos w/ repo search flag check
1 parent 75f4c29 commit 306061d

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

components/server/src/bitbucket-server/bitbucket-server-api.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,19 @@ export class BitbucketServerApi {
429429
}
430430
}
431431

432+
async getRecentRepos(userOrToken: User | string, options: { limit: number }) {
433+
const params = new URLSearchParams({
434+
limit: `${options.limit}`,
435+
});
436+
437+
const { values } = await this.runQuery<BitbucketServer.Paginated<BitbucketServer.Repository>>(
438+
userOrToken,
439+
`/profile/recent/repos?${params.toString()}`,
440+
);
441+
442+
return values || [];
443+
}
444+
432445
async getPullRequest(
433446
user: User,
434447
params: { repoKind: "projects" | "users"; owner: string; repositorySlug: string; nr: number },

components/server/src/bitbucket-server/bitbucket-server-repository-provider.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { RepoURL } from "../repohost";
1010
import { RepositoryProvider } from "../repohost/repository-provider";
1111
import { BitbucketServerApi } from "./bitbucket-server-api";
1212
import { log } from "@gitpod/gitpod-protocol/lib/util/logging";
13+
import { getExperimentsClientForBackend } from "@gitpod/gitpod-protocol/lib/experiments/configcat-server";
1314

1415
@injectable()
1516
export class BitbucketServerRepositoryProvider implements RepositoryProvider {
@@ -145,9 +146,21 @@ export class BitbucketServerRepositoryProvider implements RepositoryProvider {
145146
}
146147

147148
async getUserRepos(user: User): Promise<RepositoryInfo[]> {
149+
const repoSearchEnabled = await getExperimentsClientForBackend().getValueAsync(
150+
"repositoryFinderSearch",
151+
false,
152+
{
153+
user,
154+
},
155+
);
156+
148157
try {
149-
// TODO: implement incremental search
150-
const repos = await this.api.getRepos(user, { maxPages: 10, permission: "REPO_READ" });
158+
const repos = repoSearchEnabled
159+
? // Get up to 100 of the most recent repos if repo searching is enabled
160+
await this.api.getRecentRepos(user, { limit: 100 })
161+
: // Otherwise continue to get up to 10k repos
162+
await this.api.getRepos(user, { maxPages: 10, permission: "REPO_READ" });
163+
151164
const result: RepositoryInfo[] = [];
152165
repos.forEach((r) => {
153166
const cloneUrl = r.links.clone.find((u) => u.name === "http")?.href;

0 commit comments

Comments
 (0)