Subject: [PATCH v2 1/1] respect core.hooksPath, falling back to .git/hooks

From: "Johannes Schindelin via GitGitGadget" <[email-masked]>
Date: Mon, 30 Sep 2019 02:45:05 -0700 (PDT)

From: Johannes Schindelin <[email-masked]>

Since v2.9.0, Git knows about the config variable core.hookspath
that allows overriding the path to the directory containing the
Git hooks.

Since v2.10.0, the `--git-path` option respects that config
variable, too, so we may just as well use that command.

For Git versions older than v2.5.0 (which was the first version to
support the `--git-path` option for the `rev-parse` command), we
simply fall back to the previous code.

An original patch handled only the hooksPath setting (as the title of
this commit message suggests), however, during the code submission it
was deemed better to fix all call to the `gitdir` function.

With this change, we spawn `git rev-parse --git-path [...]` 13 times
during Git GUI's startup.

This fixes https://github.com/git-for-windows/git/issues/1755

Initial-patch-by: Philipp Gortan <[email-masked]>
Signed-off-by: Johannes Schindelin <[email-masked]>
---
 git-gui.sh | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/git-gui.sh b/git-gui.sh
index fd476b6999..b2f0e78077 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -202,7 +202,11 @@ proc gitdir {args} {
 	if {$args eq {}} {
 		return $_gitdir
 	}
-	return [eval [list file join $_gitdir] $args]
+	if {[package vcompare $::_git_version 2.5.0] >= 0} {
+		return [git rev-parse --git-path [eval [list file join] $args]]
+	} else {
+		return [eval [list file join $_gitdir] $args]
+	}
 }
 
 proc gitexec {args} {
-- 
gitgitgadget