summaryrefslogtreecommitdiff
path: root/templates/hooks--fsmonitor-watchman.sample
diff options
context:
space:
mode:
authorLibravatar Alex Vandiver <alexmv@dropbox.com>2017-11-09 11:58:09 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2017-11-10 14:04:50 +0900
commit6f1dc21d983a495877c8054d41d9b634e234ccc4 (patch)
tree66f54dd50739f5367026e6ced8bd4ba091dd04c9 /templates/hooks--fsmonitor-watchman.sample
parentfsmonitor: delay updating state until after split index is merged (diff)
downloadtgif-6f1dc21d983a495877c8054d41d9b634e234ccc4.tar.xz
fsmonitor: read from getcwd(), not the PWD environment variable
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. Signed-off-by: Alex Vandiver <alexmv@dropbox.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'templates/hooks--fsmonitor-watchman.sample')
-rwxr-xr-xtemplates/hooks--fsmonitor-watchman.sample3
1 files changed, 2 insertions, 1 deletions
diff --git a/templates/hooks--fsmonitor-watchman.sample b/templates/hooks--fsmonitor-watchman.sample
index 9a082f2781..ba6d88c5f8 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;