diff --git a/components/server/src/azure-devops/azure-context-parser.ts b/components/server/src/azure-devops/azure-context-parser.ts index df33d85a7ab38f..29460eafee3bcb 100644 --- a/components/server/src/azure-devops/azure-context-parser.ts +++ b/components/server/src/azure-devops/azure-context-parser.ts @@ -169,6 +169,7 @@ export class AzureDevOpsContextParser extends AbstractContextParser implements I try { const branchName = normalizeBranchName(repository.defaultBranch); const branch = toBranch( + result.repository, await this.azureDevOpsApi.getBranch(user, azOrganization, azProject, repo, branchName), ); if (!branch) { diff --git a/components/server/src/azure-devops/azure-converter.ts b/components/server/src/azure-devops/azure-converter.ts index b19bdc5a2cf31c..0329da5b9deed7 100644 --- a/components/server/src/azure-devops/azure-converter.ts +++ b/components/server/src/azure-devops/azure-converter.ts @@ -45,7 +45,7 @@ export function getOrgAndProject(orgAndProject: Repository["owner"]) { return [azOrg, azProject] as const; } -export function toBranch(d: GitBranchStats): Branch | undefined { +export function toBranch(repo: Repository, d: GitBranchStats): Branch | undefined { if (!d.commit) { return; } @@ -53,8 +53,10 @@ export function toBranch(d: GitBranchStats): Branch | undefined { if (!commit) { return; } + const url = new URL(repo.cloneUrl); + url.searchParams.set("version", `GB${d.name}`); return { - htmlUrl: d.commit.url!, + htmlUrl: url.toString(), name: d.name!, commit, }; diff --git a/components/server/src/azure-devops/azure-repository-provider.ts b/components/server/src/azure-devops/azure-repository-provider.ts index 18acad3194809f..22a154b17a44bb 100644 --- a/components/server/src/azure-devops/azure-repository-provider.ts +++ b/components/server/src/azure-devops/azure-repository-provider.ts @@ -27,8 +27,11 @@ export class AzureDevOpsRepositoryProvider implements RepositoryProvider { async getBranch(user: User, owner: string, repo: string, branch: string): Promise { const [azOrg, azProject] = getOrgAndProject(owner); - const response = await this.azureDevOpsApi.getBranch(user, azOrg, azProject, repo, branch); - const item = toBranch(response); + const [repository, branchResp] = await Promise.all([ + await this.getRepo(user, owner, repo), + await this.azureDevOpsApi.getBranch(user, azOrg, azProject, repo, branch), + ]); + const item = toBranch(repository, branchResp); if (!item) { // TODO(hw): [AZ] throw new Error("Failed to fetch commit."); @@ -39,9 +42,12 @@ export class AzureDevOpsRepositoryProvider implements RepositoryProvider { async getBranches(user: User, owner: string, repo: string): Promise { const branches: Branch[] = []; const [azOrg, azProject] = getOrgAndProject(owner); - const response = await this.azureDevOpsApi.getBranches(user, azOrg, azProject, repo); + const [repository, response] = await Promise.all([ + await this.getRepo(user, owner, repo), + await this.azureDevOpsApi.getBranches(user, azOrg, azProject, repo), + ]); for (const b of response) { - const item = toBranch(b); + const item = toBranch(repository, b); if (!item) { continue; }