From d0c4f368a4e2264bb68429fbd973372601572e98 Mon Sep 17 00:00:00 2001 From: Gustav Utterheim Date: Fri, 21 Mar 2025 11:27:31 +0100 Subject: [PATCH 1/2] Fix ghe.com compatibility --- src/configuration/configuration.ts | 12 +++++++++++- src/git/repository.ts | 5 ++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/configuration/configuration.ts b/src/configuration/configuration.ts index d45ff4b6..068b8ca1 100644 --- a/src/configuration/configuration.ts +++ b/src/configuration/configuration.ts @@ -68,6 +68,16 @@ export function useEnterprise(): boolean { return getConfiguration().get(getSettingsKey("use-enterprise"), false); } +export function getGithubUri(): string { + const apiUri = getGitHubApiUri(); + + if (apiUri === DEFAULT_GITHUB_API || apiUri.endsWith(".ghe.com")) { + return apiUri.replace(/^(https?):\/\/api\./, "$1://"); + } + + return apiUri.replace(/\/api\/v3$/, ""); +} + export function getGitHubApiUri(): string { if (!useEnterprise()) return DEFAULT_GITHUB_API; const base = getConfiguration().get("github-enterprise.uri", DEFAULT_GITHUB_API).replace(/\/$/, ""); @@ -76,7 +86,7 @@ export function getGitHubApiUri(): string { } if (base.endsWith(".ghe.com")) { - return `api.${base}`; + return base.replace(/^(https?):\/\//, "$1://api."); } else { return `${base}/api/v3`; } diff --git a/src/git/repository.ts b/src/git/repository.ts index 9db227cb..03d528d9 100644 --- a/src/git/repository.ts +++ b/src/git/repository.ts @@ -4,12 +4,11 @@ import {Octokit} from "@octokit/rest"; import {canReachGitHubAPI} from "../api/canReachGitHubAPI"; import {handleSamlError} from "../api/handleSamlError"; import {getSession} from "../auth/auth"; -import {getRemoteName, useEnterprise} from "../configuration/configuration"; +import {getGithubUri, getRemoteName, useEnterprise} from "../configuration/configuration"; import {Protocol} from "../external/protocol"; import {logDebug, logError} from "../log"; import {API, GitExtension, RefType, RepositoryState} from "../typings/git"; import {RepositoryPermission, getRepositoryPermission} from "./repository-permissions"; -import {getGitHubApiUri} from "../configuration/configuration"; interface GitHubUrls { workspaceUri: vscode.Uri; @@ -78,7 +77,7 @@ export async function getGitHubUrls(): Promise { if ( remote.length > 0 && (remote[0].pushUrl?.indexOf("github.com") !== -1 || - (useEnterprise() && remote[0].pushUrl?.indexOf(new URL(getGitHubApiUri()).host) !== -1)) + (useEnterprise() && remote[0].pushUrl?.indexOf(new URL(getGithubUri()).host) !== -1)) ) { const url = remote[0].pushUrl; From 3a76a0af7fcb84c982145b31d6c04143d8d8d66d Mon Sep 17 00:00:00 2001 From: Gustav Utterheim Date: Thu, 10 Apr 2025 09:23:15 +0200 Subject: [PATCH 2/2] Implement review comment suggestion --- src/configuration/configuration.ts | 10 ---------- src/git/repository.ts | 5 +++-- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/configuration/configuration.ts b/src/configuration/configuration.ts index 068b8ca1..d12711ac 100644 --- a/src/configuration/configuration.ts +++ b/src/configuration/configuration.ts @@ -68,16 +68,6 @@ export function useEnterprise(): boolean { return getConfiguration().get(getSettingsKey("use-enterprise"), false); } -export function getGithubUri(): string { - const apiUri = getGitHubApiUri(); - - if (apiUri === DEFAULT_GITHUB_API || apiUri.endsWith(".ghe.com")) { - return apiUri.replace(/^(https?):\/\/api\./, "$1://"); - } - - return apiUri.replace(/\/api\/v3$/, ""); -} - export function getGitHubApiUri(): string { if (!useEnterprise()) return DEFAULT_GITHUB_API; const base = getConfiguration().get("github-enterprise.uri", DEFAULT_GITHUB_API).replace(/\/$/, ""); diff --git a/src/git/repository.ts b/src/git/repository.ts index 03d528d9..a58a4377 100644 --- a/src/git/repository.ts +++ b/src/git/repository.ts @@ -4,7 +4,7 @@ import {Octokit} from "@octokit/rest"; import {canReachGitHubAPI} from "../api/canReachGitHubAPI"; import {handleSamlError} from "../api/handleSamlError"; import {getSession} from "../auth/auth"; -import {getGithubUri, getRemoteName, useEnterprise} from "../configuration/configuration"; +import {getGitHubApiUri, getRemoteName, useEnterprise} from "../configuration/configuration"; import {Protocol} from "../external/protocol"; import {logDebug, logError} from "../log"; import {API, GitExtension, RefType, RepositoryState} from "../typings/git"; @@ -77,7 +77,8 @@ export async function getGitHubUrls(): Promise { if ( remote.length > 0 && (remote[0].pushUrl?.indexOf("github.com") !== -1 || - (useEnterprise() && remote[0].pushUrl?.indexOf(new URL(getGithubUri()).host) !== -1)) + (useEnterprise() && remote[0].pushUrl?.indexOf(new URL(getGitHubApiUri()).host) !== -1) || + remote[0].pushUrl?.indexOf(".ghe.com") !== -1) ) { const url = remote[0].pushUrl;