On Fri, Oct 21, 2022 at 10:29:33PM -0700, Junio C Hamano wrote: > 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