Re: git rebase exec make -C in worktree confuses repo root dir
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Oct 15, 2024, 07:11 UTC
- Message-ID
- <CAPig+cQZoO8tMZ1Gip-at8-9n_tk4axctkX=WbaO1==JRru39A@mail.gmail.com>
- In-Reply-To
- <Zw2K5xJAOGWitfXr@nand.local>
On Mon, Oct 14, 2024 at 5:19 PM Taylor Blau <me@ttaylorr.com> wrote:
Show 13 quoted lines
> On Mon, Oct 14, 2024 at 10:46:45PM +0200, David Moberg wrote: > > 1. This command should return the worktree toplevel, not a subdirectory > > $ git rev-parse --show-toplevel > > /tmp/tmp.DUUAVQCIKe/repo2 > > > > 2. And the git grep command should return the match from dir/Makefile, > > not Fatal Error > > $ git grep banana > > Makefile: git grep "banana" -- "$$BANANA" > > I am not sure if this is expected behavior or not, but it feels > unintentional to me. Perhaps I am missing something funky in your > example that is causing it to behave this way.
This looks like unintentional behavior; probably a bug. It seems to be triggered by `git rebase -i` setting GIT_DIR. Here's an even simpler reproduction recipe:
% git init foo
% cd foo
% mkdir dir
% echo foo >dir/file
% git add dir/file
% git commit -m foo
% git worktree add ../bar
% cd ../bar
% git -C dir rev-parse --show-toplevel
/.../bar
% GIT_DIR=../../foo/.git/worktrees/bar \
git -C dir rev-parse --show-toplevel
/.../bar/dirThe `git rev-parse --show-toplevel` invocation with GIT_DIR set is incorrectly returning `/.../bar/dir` rather than `/.../bar`.