From bda7ec94df2074d006058ff9f739edc6e3996214 Mon Sep 17 00:00:00 2001 From: Scott Densmore Date: Fri, 30 May 2025 21:08:56 -0700 Subject: [PATCH] Fix: Update git branch watcher to use .git/logs/HEAD (#643) --- packages/cli/src/ui/hooks/useGitBranchName.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/cli/src/ui/hooks/useGitBranchName.ts b/packages/cli/src/ui/hooks/useGitBranchName.ts index 6b7b2769..463c773f 100644 --- a/packages/cli/src/ui/hooks/useGitBranchName.ts +++ b/packages/cli/src/ui/hooks/useGitBranchName.ts @@ -37,14 +37,17 @@ export function useGitBranchName(cwd: string): string | undefined { useEffect(() => { fetchBranchName(); // Initial fetch - const gitHeadPath = path.join(cwd, '.git', 'HEAD'); + const gitLogsHeadPath = path.join(cwd, '.git', 'logs', 'HEAD'); let watcher: fs.FSWatcher | undefined; const setupWatcher = async () => { try { - await fsPromises.access(gitHeadPath, fs.constants.F_OK); - watcher = fs.watch(gitHeadPath, (eventType) => { - if (eventType === 'change') { + // Check if .git/logs/HEAD exists, as it might not in a new repo or orphaned head + await fsPromises.access(gitLogsHeadPath, fs.constants.F_OK); + watcher = fs.watch(gitLogsHeadPath, (eventType: string) => { + // Changes to .git/logs/HEAD (appends) indicate HEAD has likely changed + if (eventType === 'change' || eventType === 'rename') { + // Handle rename just in case fetchBranchName(); } });