Re: [PATCH 1/4] fsmonitor: Watch, and ask about, the top of the repo, not the CWD
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Oct 20, 2017, 12:58 UTC
- Message-ID
- <alpine.DEB.2.21.1.1710201457180.40514@virtualbox>
- In-Reply-To
- <4f8e3dab26cf50cc6aa055605784680f5c33fcfa.1508461850.git.alexmv@dropbox.com>
Hi Alex,
On Thu, 19 Oct 2017, Alex Vandiver wrote:
Show 17 quoted lines
> Signed-off-by: Alex Vandiver <alexmv@dropbox.com>
> ---
> 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..377edc7be 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'};
> + $git_work_tree = `git rev-parse --show-toplevel`;
> + chomp $git_work_tree;This is super expensive, as it means a full-blown new process instead of just a simple environment variable expansion.
The idea behind using `PWD` instead was that Git will already have done all of the work of figuring out the top-level directory and switched to there before calling the fsmonitor hook.
Did you see any case where the script was *not* called from the top-level directory?
Ciao, Johannes