diff --git a/packages/server/src/utils/checkout-git.ts b/packages/server/src/utils/checkout-git.ts index 924a6ae4e..75cc1ae6d 100644 --- a/packages/server/src/utils/checkout-git.ts +++ b/packages/server/src/utils/checkout-git.ts @@ -732,22 +732,25 @@ export async function getCurrentBranch(cwd: string): Promise { } async function getRebaseHeadBranch(cwd: string): Promise { - for (const path of ["rebase-merge/head-name", "rebase-apply/head-name"]) { - try { - const { stdout } = await runGitCommand(["rev-parse", "--git-path", path], { - cwd, - env: READ_ONLY_GIT_ENV, - }); - const headName = (await readFile(resolve(cwd, stdout.trim()), "utf8")).trim(); - if (headName.startsWith("refs/heads/")) { - return headName.slice("refs/heads/".length) || null; + const paths = ["rebase-merge/head-name", "rebase-apply/head-name"]; + const results = await Promise.all( + paths.map(async (path): Promise => { + try { + const { stdout } = await runGitCommand(["rev-parse", "--git-path", path], { + cwd, + env: READ_ONLY_GIT_ENV, + }); + const headName = (await readFile(resolve(cwd, stdout.trim()), "utf8")).trim(); + if (headName.startsWith("refs/heads/")) { + return headName.slice("refs/heads/".length) || null; + } + return headName || null; + } catch { + return null; } - return headName || null; - } catch { - // Try the other rebase backend. - } - } - return null; + }), + ); + return results.find((result): result is string => result !== null) ?? null; } async function getWorktreeRoot(cwd: string): Promise {