Re: [PATCH v2 2/2] setup: allow Git.pm to do unsafe repo checking
- From
Jeff King <peff@peff.net>
- Date
- Oct 22, 2022, 21:18 UTC
- Message-ID
- <Y1ReKB701QXRv64A@coredump.intra.peff.net>
- In-Reply-To
- <xmqq1qr0ifya.fsf@gitster.g>
On Fri, Oct 21, 2022 at 10:29:33PM -0700, Junio C Hamano wrote:
Show 11 quoted lines
> I also have to wonder (and this is *not* a suggestion for inventing > an alternative fix for perl/Git.pm) if we were creating perl/Git.pm > from scratch today, we even need to be worried about this issue. We > may have Git::repo_path() helper but if we call it in a natural way > (read: as if an interactive end-user would type commands), it is > likely that we would run "git rev-parse --git-dir" or something > without setting GIT_DIR, and when we need to run "git" command, say > "git diff", we would also run "git diff" as if the end user would > type from within their interactive session and without setting > GIT_DIR, and everything should work. IOW, why do we even setting > and exporting the auto-detected value in GIT_DIR?
I think it has to in order to avoid surprises. If I do this:
perl -MGit -e '
my $r = Git->repository;
chdir("/somewhere/else");
$r->git_command(...);
'that command ought to run in the repository I opened earlier. So I think to keep the illusion of a lib-ified object, creating that object has to lock in the path.
But it really seems like we should be asking rev-parse what that path is, not trying to do any magic ourselves.
-Peff