list mirror (unofficial, one of many)
 help / color / Atom feed
From: Johannes Schindelin <>
To: Ævar Arnfjörð Bjarmason  <>
Cc: Philipp Gortan <>,
	Git Mailing List <>,
	Philip Oakley <>
Subject: Re: git-gui ignores core.hooksPath
Date: Wed, 14 Jun 2017 15:15:55 +0200 (CEST)
Message-ID: <alpine.DEB.> (raw)
In-Reply-To: <>

[-- Attachment #1: Type: text/plain, Size: 3563 bytes --]


On Fri, 2 Jun 2017, Ævar Arnfjörð Bjarmason wrote:

> On Fri, Jun 2, 2017 at 3:41 PM, Philipp Gortan <> wrote:
> > I've been unhappy for quite a while that I had to configure the hooks
> > manually for each of my repos - until I found out recently that there
> > is the core.hooksPath config variable that (when set globally) allows
> > me to specify a hooks directory to be used for all my repositories.
> >
> > Now I was happy - for a few minutes, until I tested this feature in
> > git-gui, and realized that it doesn't work there.
> >
> > This seems to be caused by "proc githook_read", which says "set pchook
> > [gitdir hooks $hook_name]" instead of querying "git config
> > core.hooksPath" first - cf
> >
> >
> > Would be great if this could get fixed...

Indeed. Why don't you give it a try?

> This indeed is something that should be fixed, but git-gui development
> is managed outside of git.git, it's just occasionally pulled in. I'm
> not what the best place to contact is, but I've CC'd
> Philip Oakley who's been making recent commits to git-gui.git at

Philip is in the same spot as I am: we both worked on Git GUI to improve
it for Git for Windows users, but Pat has been silent for over half a year
on all of our PRs.

In the meantime, I managed to get a couple of changes into git.git via
Junio, but the situation is far from ideal.

So what I settled on is to carry a couple of Git GUI patches in Git for
Windows' fork, until the time when the patches finally get accepted into

In this particular instance, the only question is whether to use `git
rev-parse --git-path hooks` or re-roll the core.hookspath logic in

Both approaches have their downsides:

- rev-parse --git-path was broken in subdirectories for a *really* long
  time. Since Git GUI is supposed to be relatively independent from the
  version of the installed git executable, that would imply a couple of
  ugly extra code just to make sure that it works correctly.

- duplicating the core.hookspath logic is prone to become stale over time,
  as Git may change the behavior (as it did with the core.hookspath

The subdirectory problem of --git-path is actually not that bad, as Git
GUI cd's to the top-level directory anyway. So that bug does not affect
us. The only caveat is that --git-path was only introduced into v2.5.0,
and Git GUI has conditional code to even support pre-1.6.3 versions.

Happily, pre-1.6.3 versions are not supposed to handle core.hookspath in
the way v2.9.0 and later handle it.

So something like this *may* work:

-- snip --
diff --git a/git-gui/ b/git-gui/
index 37c1c5d227b..3067a3b000a 100755
--- a/git-gui/
+++ b/git-gui/
@@ -624,7 +624,11 @@ proc git_write {args} {
 proc githook_read {hook_name args} {
-	set pchook [gitdir hooks $hook_name]
+	if {[package vcompare $::_git_version 2.5.0] >= 0} {
+		set pchook [git rev-parse --git-path "hooks/$hook_name"]
+	} else {
+		set pchook [gitdir hooks $hook_name]
+	}
 	lappend args 2>@1
 	# On Windows [file executable] might lie so we need to ask
-- snap --

Philipp, this is as far as I will go with this. If you truly desire this
to be fixed, please take it from here (read: test, fix and submit with a
good commit message).


  parent reply index

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-02 13:41 Philipp Gortan
2017-06-02 14:21 ` Samuel Lijin
2017-06-02 16:38 ` Ævar Arnfjörð Bjarmason
2017-06-02 20:23   ` [PATCH] respect core.hooksPath, falling back to .git/hooks Philipp Gortan
2017-06-02 20:39     ` Philipp Gortan
2017-06-14 13:24     ` Johannes Schindelin
2017-06-02 23:00   ` git-gui ignores core.hooksPath Philip Oakley
2017-06-02 23:21     ` Philipp Gortan
2017-06-14 13:15   ` Johannes Schindelin [this message]
2017-06-14 13:25     ` Philipp Gortan
2018-04-10 15:00       ` Chris Maes
2018-04-10 22:06         ` Johannes Schindelin
2018-04-10 22:50         ` Junio C Hamano
2018-04-10 23:31           ` Ævar Arnfjörð Bjarmason
2018-04-11  0:44             ` Junio C Hamano
2018-06-05  5:48           ` Bert Wesarg
2018-06-11 21:58             ` Stefan Beller
2018-06-12  6:09               ` Johannes Sixt
2018-07-10 12:08       ` Johannes Schindelin
2018-07-10 15:18         ` Philip Oakley
  -- strict thread matches above, loose matches on Subject: below --
2017-02-04 17:14 git-gui ignores core.hookspath matthias.serfling

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

  List information:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.DEB. \ \ \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link list mirror (unofficial, one of many)

Archives are clonable:
	git clone --mirror
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

Newsgroups are available over NNTP:

 note: .onion URLs require Tor:

AGPL code for this site: git clone public-inbox