Re: bug: for-each-repo malfunctions in worktree due to GIT_DIR
From: Derrick Stolee <hidden>
Date: 2026-02-24 01:52:12
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