From: Derrick Stolee Date: Tue, 24 Feb 2026 01:52:10 GMT Subject: Re: bug: for-each-repo malfunctions in worktree due to GIT_DIR Message-ID: <1d4d795d-3a0b-47c5-864f-56f3c7601d39@gmail.com> In-Reply-To: On 2/23/26 5:58 PM, Matthew Gabeler-Lee wrote: > I noticed some scripts I have that utilize `git for-each-repo` don't > work if I run them from within a git worktree, but they do work fine > from within other directories, including the parent git clone of those > worktrees. The symptom is that the command I pass to `for-each-repo` > is run as if from within the worktree each time, instead of the repos > fetched from the corresponding config entry. > > After a bit of sleuthing with strace, I think I identified the cause: > $GIT_DIR is set in the `git for-each-repo` process, and gets passed to > the child git invocations it launches. > > And thus, from within that worktree, `git for-each-repo > --config=foo.bar -- branch` becomes the equivalent of: > > GIT_DIR=/worktree-parent/.git git -C /unrelated-repo branch > > Which of course is not what the `for-each-repo` invocation would be > expected to do. You're absolutely right on this. It's a subtle oversight, as it's not one of the worktree-specific variables, but GIT_DIR is being set by the worktree logic. I have a test and a fix on the way in [1]. You'll be CC'd when I send the patches after a CI run. [1] https://github.com/gitgitgadget/git/pull/2056 Thanks, -Stolee