Alex Vandiver <alexmv@xxxxxxxxxxx> writes: This comment is only so that I do not keep editing them while queuing.. > Subject: Re: [PATCH 1/2] fsmonitor: Read from getcwd(), not the PWD environment variable Downcase "Read" (or any word after "<area>: " on the commit title). > Though the process has chdir'd to the root of the working tree, the > PWD environment variable is only guaranteed to be updated accordingly > if a shell is involved -- which is not guaranteed to be the case. > That is, if `/usr/bin/perl` is a binary, $ENV{PWD} is unchanged from > whatever spawned `git` -- if `/usr/bin/perl` is a trivial shell > wrapper to the real `perl`, `$ENV{PWD}` will have been updated to the > root of the working copy. > > Update to read from the Cwd module using the `getcwd` syscall, not the > PWD environment variable. The Cygwin case is left unchanged, as it > necessarily _does_ go through a shell. Interesting observation. Why didn't anybody else notice it, I wonder? Thanks, will queue. > Signed-off-by: Alex Vandiver <alexmv@xxxxxxxxxxx> > --- > t/t7519/fsmonitor-watchman | 3 ++- > templates/hooks--fsmonitor-watchman.sample | 3 ++- > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/t/t7519/fsmonitor-watchman b/t/t7519/fsmonitor-watchman > index a3e30bf54..5fe72cefa 100755 > --- a/t/t7519/fsmonitor-watchman > +++ b/t/t7519/fsmonitor-watchman > @@ -41,7 +41,8 @@ if ($system =~ m/^MSYS_NT/ || $system =~ m/^MINGW/) { > $git_work_tree =~ s/[\r\n]+//g; > $git_work_tree =~ s,\\,/,g; > } else { > - $git_work_tree = $ENV{'PWD'}; > + require Cwd; > + $git_work_tree = Cwd::cwd(); > } > > my $retry = 1; > diff --git a/templates/hooks--fsmonitor-watchman.sample b/templates/hooks--fsmonitor-watchman.sample > index 9a082f278..ba6d88c5f 100755 > --- a/templates/hooks--fsmonitor-watchman.sample > +++ b/templates/hooks--fsmonitor-watchman.sample > @@ -40,7 +40,8 @@ if ($system =~ m/^MSYS_NT/ || $system =~ m/^MINGW/) { > $git_work_tree =~ s/[\r\n]+//g; > $git_work_tree =~ s,\\,/,g; > } else { > - $git_work_tree = $ENV{'PWD'}; > + require Cwd; > + $git_work_tree = Cwd::cwd(); > } > > my $retry = 1;