From: Justin Tobler <jltobler@gmail.com>
To: K Jayatheerth <jayatheerthkulkarni2005@gmail.com>
Cc: git@vger.kernel.org, lucasseikioshiro@gmail.com, gitster@pobox.com
Subject: Re: [GSoC Patch v7 4/8] repo: add path.hooks with absolute and relative suffixes
Date: Mon, 2 Nov 2026 16:32:02 -0600 [thread overview]
Message-ID: <aukHlEd5udC1gLYZ@denethor> (raw)
In-Reply-To: <20260927114420.59724-5-jayatheerthkulkarni2005@gmail.com>
On 26/09/27 05:14PM, K Jayatheerth wrote:
> Hooks are an integral part of a repository's configuration and are
> commonly used by tooling to automate repository-specific workflows.
> Currently, scripts typically retrieve the hooks directory by invoking
> `git rev-parse --git-path hooks`.
>
> Introduce `path.hooks.absolute` and `path.hooks.relative` keys to
> `git repo info`. This exposes the hooks directory as a scriptable
> config-like key using standard format rules, allowing scripts to
> retrieve it through the same interface as other repository path
> information.
>
> Mentored-by: Justin Tobler <jltobler@gmail.com>
> Mentored-by: Lucas Seiki Oshiro <lucasseikioshiro@gmail.com>
> Signed-off-by: K Jayatheerth <jayatheerthkulkarni2005@gmail.com>
> ---
> Documentation/git-repo.adoc | 9 +++++++++
> builtin/repo.c | 22 ++++++++++++++++++++++
> t/t1900-repo-info.sh | 28 ++++++++++++++++++++++++++--
> 3 files changed, 57 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/git-repo.adoc b/Documentation/git-repo.adoc
> index e524a07f53..20836cf8f6 100644
> --- a/Documentation/git-repo.adoc
> +++ b/Documentation/git-repo.adoc
> @@ -119,6 +119,15 @@ values that they return:
> `path.gitdir.relative`::
> The path to the Git repository directory relative to the current working directory.
>
> +`path.hooks.absolute`::
> + The canonical absolute path to the repository's hooks directory.
> + Respects the `core.hooksPath` configuration. If `core.hooksPath` is
> + set to `/dev/null`, that value is returned unchanged.
> +
> +`path.hooks.relative`::
> + The path to the repository's hooks directory relative to the current
> + working directory. Respects the `core.hooksPath` configuration.
So if a repository has `core.hooksPath` set to "/dev/null", the relative
path output here would be something like "../../../../dev/null". I
recognize that this matches the current behavior:
$ git -c core.hooksPath=/dev/null rev-parse --path-format=relative --git-path hooks
../../../../dev/null
...but I'm still not really convinced that is is a behavior we would
want to carry over as it makes it harder to users to figure out when
hooks are disabled.
I would suggest we print the "/dev/null" here even when the relative
path is requested and document the behavior.
[snip]
> diff --git a/t/t1900-repo-info.sh b/t/t1900-repo-info.sh
> index eec576a1d9..1da5db4942 100755
> --- a/t/t1900-repo-info.sh
> +++ b/t/t1900-repo-info.sh
> @@ -174,7 +174,11 @@ test_repo_info_path () {
> cd repo/sub &&
> ROOT="$(test-tool path-utils real_path ..)" && export ROOT &&
> eval "$init_command" &&
> - echo "path.$field_name.absolute=$ROOT/$expected_dir" >expect &&
> + case "$expected_dir" in
> + /*) EXPECT_ABS="$expected_dir" ;;
> + *) EXPECT_ABS="$ROOT/$expected_dir" ;;
> + esac &&
> + echo "path.$field_name.absolute=$EXPECT_ABS" >expect &&
> git repo info "path.$field_name.absolute" >actual &&
> test_cmp expect actual
> )
> @@ -188,7 +192,11 @@ test_repo_info_path () {
> cd repo/sub &&
> ROOT="$(test-tool path-utils real_path ..)" && export ROOT &&
> eval "$init_command" &&
> - echo "path.$field_name.relative=../$expected_dir" >expect &&
> + case "$expected_dir" in
> + /*) EXPECT_REL="$(test-tool path-utils relative_path "$expected_dir" "$PWD")" ;;
> + *) EXPECT_REL="../$expected_dir" ;;
> + esac &&
> + echo "path.$field_name.relative=$EXPECT_REL" >expect &&
> git repo info "path.$field_name.relative" >actual &&
> test_cmp expect actual
> )
From what I can gather, the code changes to this test helper is really
only required for the "/dev/null" test case. IMO, this helper function
has now become quite unwieldy and rather difficult to parse.
I think we would be better off writing the "/dev/null" test case by hand.
> @@ -213,6 +221,22 @@ test_repo_info_path 'gitdir with explicit GIT_DIR' 'gitdir' \
> '.git' \
> 'GIT_DIR="../.git" && export GIT_DIR'
>
> +test_repo_info_path 'hooks standard' 'hooks' '.git/hooks'
> +
> +test_repo_info_path 'hooks with core.hooksPath override' 'hooks' \
> + 'custom-hooks' \
> + 'git config core.hooksPath "$ROOT/custom-hooks" && mkdir -p "$ROOT/custom-hooks"'
> +
> +# /dev/null is not a real, canonicalizable filesystem path on Windows,
> +# so path resolution for core.hooksPath=/dev/null cannot be expected to
> +# produce a literal "/dev/null" the way it does on POSIX systems.
> +if ! test_have_prereq MINGW
> +then
> + test_repo_info_path 'hooks with core.hooksPath=/dev/null' 'hooks' \
> + '/dev/null' \
> + 'git config core.hooksPath /dev/null'
> +fi
I'm not quite sure I follow here. Are we saying that the git-repo-info
command won't work on windows if the hooks are set to "/dev/null"? Or is
it just some issue with how the test is written? If its the latter,
maybe this is something we can work around if the test is written
without the use of the `test_repo_info_path` helper?
-Justin
next prev parent reply other threads:[~2026-11-02 22:32 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-16 1:21 [GSoC Patch 0/7] repo: add more path keys to git repo info K Jayatheerth
2026-07-16 1:21 ` [GSoC Patch 1/7] repo: add path.toplevel with absolute and relative suffix formatting K Jayatheerth
2026-08-15 23:06 ` Lucas Seiki Oshiro
2026-08-18 16:09 ` K Jayatheerth
2026-07-16 1:21 ` [GSoC Patch 2/7] repo: add path.superproject-working-tree with absolute and relative suffixes K Jayatheerth
2026-07-16 1:21 ` [GSoC Patch 3/7] repo: add path.objects with absolute and relative suffix formatting K Jayatheerth
2026-07-16 1:21 ` [GSoC Patch 4/7] repo: add path.hooks " K Jayatheerth
2026-07-16 1:21 ` [GSoC Patch 5/7] repo: add path.index " K Jayatheerth
2026-07-16 1:21 ` [GSoC Patch 6/7] repo: add path.grafts " K Jayatheerth
2026-07-16 1:21 ` [GSoC Patch 7/7] repo: add path.git-prefix path key validation K Jayatheerth
2026-07-16 3:23 ` Junio C Hamano
2026-07-16 15:36 ` K Jayatheerth
2026-07-17 13:30 ` [GSoC Patch v2 0/7] repo: add more path keys to git repo info K Jayatheerth
2026-07-17 13:30 ` [GSoC Patch v2 1/7] repo: add path.toplevel with absolute and relative suffix formatting K Jayatheerth
2026-07-17 13:30 ` [GSoC Patch v2 2/7] repo: add path.superproject-working-tree with absolute and relative suffixes K Jayatheerth
2026-07-17 13:30 ` [GSoC Patch v2 3/7] repo: add path.objects with absolute and relative suffix formatting K Jayatheerth
2026-07-17 13:30 ` [GSoC Patch v2 4/7] repo: add path.hooks " K Jayatheerth
2026-07-17 13:30 ` [GSoC Patch v2 5/7] repo: add path.index " K Jayatheerth
2026-07-20 0:35 ` Lucas Seiki Oshiro
2026-07-24 17:49 ` K Jayatheerth
2026-07-24 19:21 ` Junio C Hamano
2026-07-17 13:30 ` [GSoC Patch v2 6/7] repo: add path.grafts " K Jayatheerth
2026-07-20 0:20 ` Lucas Seiki Oshiro
2026-07-20 4:01 ` Junio C Hamano
2026-07-21 2:19 ` K Jayatheerth
2026-07-17 13:30 ` [GSoC Patch v2 7/7] repo: add path.git-prefix path key K Jayatheerth
2026-07-26 10:43 ` [GSoC Patch v3 0/7] repo: add more path keys to git repo info K Jayatheerth
2026-07-26 10:43 ` [PATCH v3 1/7] repo: add path.toplevel with absolute and relative suffix formatting K Jayatheerth
2026-07-27 8:45 ` Junio C Hamano
2026-07-28 1:21 ` K Jayatheerth
2026-07-28 16:36 ` Justin Tobler
2026-07-29 16:36 ` K Jayatheerth
2026-07-26 10:43 ` [PATCH v3 2/7] repo: add path.superproject-working-tree with absolute and relative suffixes K Jayatheerth
2026-07-28 16:43 ` Justin Tobler
2026-07-26 10:43 ` [PATCH v3 3/7] repo: add path.objects with absolute and relative suffix formatting K Jayatheerth
2026-07-28 17:12 ` Justin Tobler
2026-07-26 10:43 ` [PATCH v3 4/7] repo: add path.hooks " K Jayatheerth
2026-07-28 19:00 ` Justin Tobler
2026-07-26 10:43 ` [PATCH v3 5/7] repo: add path.index " K Jayatheerth
2026-07-26 10:43 ` [PATCH v3 6/7] repo: add path.grafts " K Jayatheerth
2026-07-26 10:43 ` [PATCH v3 7/7] repo: add path.git-prefix path key K Jayatheerth
2026-07-26 16:29 ` [GSoC Patch v3 0/7] repo: add more path keys to git repo info Junio C Hamano
2026-07-26 17:00 ` K Jayatheerth
2026-07-27 0:57 ` Lucas Seiki Oshiro
2026-07-27 5:55 ` Junio C Hamano
2026-08-06 10:15 ` [GSoC PATCH v4 " K Jayatheerth
2026-08-06 10:15 ` [GSoC PATCH v4 1/7] repo: add path.toplevel with absolute and relative suffix formatting K Jayatheerth
2026-08-06 10:15 ` [GSoC PATCH v4 2/7] repo: add path.superproject-root with absolute and relative suffixes K Jayatheerth
2026-08-06 10:15 ` [GSoC PATCH v4 3/7] repo: add path.hooks " K Jayatheerth
2026-08-06 10:15 ` [GSoC PATCH v4 4/7] repo: add path.index " K Jayatheerth
2026-08-06 10:15 ` [GSoC PATCH v4 5/7] repo: add path.grafts " K Jayatheerth
2026-08-06 10:15 ` [GSoC PATCH v4 6/7] repo: add path.git-prefix K Jayatheerth
2026-08-16 0:53 ` Lucas Seiki Oshiro
2026-08-18 16:33 ` K Jayatheerth
2026-08-18 17:09 ` Junio C Hamano
2026-08-21 14:08 ` K Jayatheerth
2026-08-06 10:15 ` [GSoC PATCH v4 7/7] repo: remove unused setup.h include K Jayatheerth
2026-08-25 17:58 ` [GSoC Patch v5 0/7] add more path keys to git repo info K Jayatheerth
2026-08-25 17:58 ` [GSoC Patch v5 1/7] repo: add path.toplevel with absolute and relative suffix formatting K Jayatheerth
2026-08-25 17:58 ` [GSoC Patch v5 2/7] repo: add path.superproject-root with absolute and relative suffixes K Jayatheerth
2026-09-04 22:09 ` Junio C Hamano
2026-09-05 10:01 ` K Jayatheerth
2026-08-25 17:58 ` [GSoC Patch v5 3/7] repo: add path.hooks " K Jayatheerth
2026-08-25 17:58 ` [GSoC Patch v5 4/7] repo: add path.index " K Jayatheerth
2026-08-25 17:58 ` [GSoC Patch v5 5/7] repo: add path.grafts " K Jayatheerth
2026-08-25 17:58 ` [GSoC Patch v5 6/7] repo: add path.git-prefix K Jayatheerth
2026-08-25 17:58 ` [GSoC Patch v5 7/7] repo: add path.cdup K Jayatheerth
2026-08-25 19:31 ` Junio C Hamano
2026-09-04 14:37 ` K Jayatheerth
2026-08-26 7:23 ` [GSoC Patch v5 0/7] add more path keys to git repo info SZEDER Gábor
2026-08-26 14:18 ` Junio C Hamano
2026-09-11 14:45 ` [GSoC Patch v6 " K Jayatheerth
2026-09-11 14:45 ` [GSoC Patch v6 1/7] repo: add path.toplevel with absolute and relative suffix formatting K Jayatheerth
2026-09-11 14:45 ` [GSoC Patch v6 2/7] repo: add path.superproject-root with absolute and relative suffixes K Jayatheerth
2026-09-11 22:08 ` Junio C Hamano
2026-09-23 17:40 ` K Jayatheerth
2026-09-11 14:45 ` [GSoC Patch v6 3/7] repo: add path.hooks " K Jayatheerth
2026-09-11 14:45 ` [GSoC Patch v6 4/7] repo: add path.index " K Jayatheerth
2026-09-11 16:55 ` Junio C Hamano
2026-09-23 17:25 ` K Jayatheerth
2026-09-11 14:45 ` [GSoC Patch v6 5/7] repo: add path.grafts " K Jayatheerth
2026-09-11 14:45 ` [GSoC Patch v6 6/7] repo: add path.git-prefix K Jayatheerth
2026-09-11 14:45 ` [GSoC Patch v6 7/7] repo: add path.cdup K Jayatheerth
2026-09-11 17:37 ` Junio C Hamano
2026-09-23 17:37 ` K Jayatheerth
2026-09-27 11:44 ` [GSoC Patch v7 0/8] add more path keys to git repo info K Jayatheerth
2026-09-27 11:44 ` [GSoC Patch v7 1/8] repo: add path.toplevel with absolute and relative suffix formatting K Jayatheerth
2026-09-27 11:44 ` [GSoC Patch v7 2/8] submodule: use repository to find superproject K Jayatheerth
2026-11-02 21:36 ` Justin Tobler
2026-11-03 2:08 ` K Jayatheerth
2026-09-27 11:44 ` [GSoC Patch v7 3/8] repo: add path.superproject-root with absolute and relative suffixes K Jayatheerth
2026-11-02 21:43 ` Justin Tobler
2026-11-03 2:10 ` K Jayatheerth
2026-09-27 11:44 ` [GSoC Patch v7 4/8] repo: add path.hooks " K Jayatheerth
2026-11-02 22:32 ` Justin Tobler [this message]
2026-11-03 2:31 ` K Jayatheerth
2026-11-03 16:16 ` Justin Tobler
2026-11-03 18:27 ` K Jayatheerth
2026-09-27 11:44 ` [GSoC Patch v7 5/8] repo: add path.index " K Jayatheerth
2026-09-27 11:44 ` [GSoC Patch v7 6/8] repo: add path.grafts " K Jayatheerth
2026-11-02 22:47 ` Justin Tobler
2026-11-03 2:50 ` K Jayatheerth
2026-09-27 11:44 ` [GSoC Patch v7 7/8] repo: add path.git-prefix K Jayatheerth
2026-09-27 11:44 ` [GSoC Patch v7 8/8] repo: add path.cdup K Jayatheerth
2026-11-02 23:20 ` Justin Tobler
2026-11-03 2:54 ` K Jayatheerth
2026-11-01 23:30 ` [GSoC Patch v7 0/8] add more path keys to git repo info Junio C Hamano
2026-11-01 23:51 ` Justin Tobler
2026-11-02 9:31 ` Junio C Hamano
Reply instructions:
You may reply publicly 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:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aukHlEd5udC1gLYZ@denethor \
--to=jltobler@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jayatheerthkulkarni2005@gmail.com \
--cc=lucasseikioshiro@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.