diff --git a/codex-vscode/src/services/git.service.ts b/codex-vscode/src/services/git.service.ts index ec94a5e8..1069c835 100644 --- a/codex-vscode/src/services/git.service.ts +++ b/codex-vscode/src/services/git.service.ts @@ -127,19 +127,32 @@ export class GitService implements Singleton { * @param repository * @returns Remote | undefined */ - private static getRemote(repository: Repository): Remote | undefined { - let originRepo = repository?.state?.remotes?.find((remote) => remote.name === "origin" && remote.fetchUrl); - if (originRepo) { - return originRepo; - } +private static getRemote(repository: Repository): Remote | undefined { + let originRepo = this.findOriginRemote(repository); + if (originRepo) { + return originRepo; + } - logger.info(`Could not find repo origin - gitService.getFetchOrigin`, { - repositoryRemotes: repository?.state?.remotes, - }); - // We couldn't find a repo w/ Origin as it's name, so we'll naively take the first one - originRepo = repository?.state?.remotes && repository?.state?.remotes[0]; - if (originRepo?.fetchUrl) { - return originRepo; - } + return this.findFirstRemoteWithFetchUrl(repository); +} + +private static findOriginRemote(repository: Repository): Remote | undefined { + const originRepo = repository?.state?.remotes?.find((remote) => remote.name === "origin" && remote.fetchUrl); + if (originRepo) { + return originRepo; } + + logger.info(`Could not find repo origin - gitService.getFetchOrigin`, { + repositoryRemotes: repository?.state?.remotes, + }); + return undefined; +} + +private static findFirstRemoteWithFetchUrl(repository: Repository): Remote | undefined { + const originRepo = repository?.state?.remotes && repository?.state?.remotes[0]; + if (originRepo?.fetchUrl) { + return originRepo; + } + return undefined; +} }