Re: git rebase exec make -C in worktree confuses repo root dir

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Oct 16, 2024 at 10:15:49AM +0100, Phillip Wood wrote:
> On 15/10/2024 21:01, Eric Sunshine wrote:
> > On Tue, Oct 15, 2024 at 2:55 PM David Moberg <kaddkaka@xxxxxxxxx> wrote:
> > > Den tis 15 okt. 2024 kl 09:11 skrev Eric Sunshine <sunshine@xxxxxxxxxxxxxx>:
> > > > 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/dir
> > > >
> > > > The `git rev-parse --show-toplevel` invocation with GIT_DIR set is
> > > > incorrectly returning `/.../bar/dir` rather than `/.../bar`.
> > >
> > > Thanks, that is indeed a much smaller example and it seems to exhibit
> > > the same issue. Can we figure out how to fix it?
> >
> > Someone is going to have to dig into the code, but my Git time is very
> > limited right now, so perhaps someone else can do the digging.
>
> I'm about to go off the list until the 29th so I wont be working on it soon
> either but I think the problem is that git sets $GIT_DIR when it is run from
> a linked worktree. I've reproduced the commit message from ff5b7913f0a
> (sequencer, stash: fix running from worktree subdir, 2022-01-26) below which
> I think explains the problem we're seeing here. Unfortunately the approach
> of setting $GIT_WORK_TREE used in that commit won't work for exec commands
> as they may be run in a different worktree. Naively I feel that if
> setup_git_directory() has found ".git" then any git subprocesses run in the
> worktree should also be able to find ".git" and so it should not be setting
> $GIT_DIR but there maybe there is some subtlety I'm missing

Let's see if that commit's author Elijah (CC'd) has any other thoughts.

Thanks,
Taylor




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux