public inbox for git@vger.kernel.org
 help / color / mirror / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: Adrian Ratiu <adrian.ratiu@collabora.com>
Cc: git@vger.kernel.org, Emily Shaffer <emilyshaffer@google.com>,
	Junio C Hamano <gitster@pobox.com>,
	"brian m . carlson" <sandals@crustytoothpaste.net>
Subject: Re: [PATCH 09/10] hook: show config scope in git hook list
Date: Wed, 11 Mar 2026 11:24:34 +0100	[thread overview]
Message-ID: <abFC4uLP-JwDoKde@pks.im> (raw)
In-Reply-To: <20260309005416.2760030-10-adrian.ratiu@collabora.com>

On Mon, Mar 09, 2026 at 02:54:15AM +0200, Adrian Ratiu wrote:
> diff --git a/builtin/hook.c b/builtin/hook.c
> index 8fc647a4de..c806640361 100644
> --- a/builtin/hook.c
> +++ b/builtin/hook.c
> @@ -70,7 +73,14 @@ static int list(int argc, const char **argv, const char *prefix,
>  			printf("%s%c", _("hook from hookdir"), line_terminator);
>  			break;
>  		case HOOK_CONFIGURED:
> -			printf("%s%c", h->u.configured.friendly_name, line_terminator);
> +			if (show_scope)
> +				printf("%s (%s)%c",
> +				       h->u.configured.friendly_name,
> +				       config_scope_name(h->u.configured.scope),
> +				       line_terminator);

Are we sure that this is always unambiguous? Can the friendly name for
example contain a space itself, or is it possible that the scope gets
extended eventually so that parsing becomes ambiguous?

I'm not sure about this myself, but that may indicate that we should
maybe also separate the name and scope with a NUL byte.

> diff --git a/hook.c b/hook.c
> index 4fe50aa38c..2c03baeaac 100644
> --- a/hook.c
> +++ b/hook.c
> @@ -172,7 +172,19 @@ static int hook_config_lookup_all(const char *key, const char *value,
>  
>  			/* Re-insert if necessary to preserve last-seen order. */
>  			unsorted_string_list_remove(hooks, hook_name, 0);
> -			string_list_append(hooks, hook_name);
> +
> +			if (!ctx->kvi)
> +				BUG("hook config callback called without key-value info");
> +
> +			/*
> +			 * Stash the config scope in the util pointer for
> +			 * later retrieval in build_hook_config_map(). This
> +			 * intermediate struct is transient and never leaves
> +			 * that function, so we pack the enum value into the
> +			 * pointer rather than heap-allocating a wrapper.
> +			 */
> +			string_list_append(hooks, hook_name)->util =
> +				(void *)(uintptr_t)ctx->kvi->scope;
>  		}
>  	} else if (!strcmp(subkey, "command")) {
>  		/* Store command overwriting the old value */

Okay. This is a bit ugly, but I guess it should work in practice? The
alternative would be to allocate the scope and store the pointer here.

Patrick

  parent reply	other threads:[~2026-03-11 10:24 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-09  0:54 [PATCH 00/10] config-hook cleanups and two small 'git hook list' features Adrian Ratiu
2026-03-09  0:54 ` [PATCH 01/10] hook: move unsorted_string_list_remove() to string-list.[ch] Adrian Ratiu
2026-03-10 19:56   ` SZEDER Gábor
2026-03-11 11:08     ` Adrian Ratiu
2026-03-09  0:54 ` [PATCH 02/10] hook: fix minor style issues Adrian Ratiu
2026-03-09  2:12   ` Eric Sunshine
2026-03-09  0:54 ` [PATCH 03/10] hook: rename cb_data_free/alloc -> hook_data_free/alloc Adrian Ratiu
2026-03-11 10:24   ` Patrick Steinhardt
2026-03-11 11:09     ` Adrian Ratiu
2026-03-09  0:54 ` [PATCH 04/10] hook: detect & emit two more bugs Adrian Ratiu
2026-03-09  0:54 ` [PATCH 05/10] hook: replace hook_list_clear() -> string_list_clear_func() Adrian Ratiu
2026-03-09  2:18   ` Eric Sunshine
2026-03-10 14:20     ` Adrian Ratiu
2026-03-09  0:54 ` [PATCH 06/10] hook: make consistent use of friendly-name in docs Adrian Ratiu
2026-03-09  0:54 ` [PATCH 07/10] t1800: add test to verify hook execution ordering Adrian Ratiu
2026-03-09  0:54 ` [PATCH 08/10] hook: refactor hook_config_cache from strmap to named struct Adrian Ratiu
2026-03-09 21:59   ` Junio C Hamano
2026-03-10 14:19     ` Adrian Ratiu
2026-03-09  0:54 ` [PATCH 09/10] hook: show config scope in git hook list Adrian Ratiu
2026-03-09 21:59   ` Junio C Hamano
2026-03-10 14:45     ` Adrian Ratiu
2026-03-11 10:24   ` Patrick Steinhardt [this message]
2026-03-11 11:47     ` Adrian Ratiu
2026-03-09  0:54 ` [PATCH 10/10] hook: show disabled hooks in "git hook list" Adrian Ratiu
2026-03-11 10:24   ` Patrick Steinhardt
2026-03-11 12:24     ` Adrian Ratiu
2026-03-11 13:53       ` Patrick Steinhardt
2026-03-09 20:14 ` [PATCH 00/10] config-hook cleanups and two small 'git hook list' features Junio C Hamano
2026-03-10 14:37   ` Adrian Ratiu
2026-03-09 20:27 ` Junio C Hamano
2026-03-20 11:52 ` [PATCH v2 " Adrian Ratiu
2026-03-20 11:52   ` [PATCH v2 01/10] hook: move unsorted_string_list_remove() to string-list.[ch] Adrian Ratiu
2026-03-20 11:52   ` [PATCH v2 02/10] hook: fix minor style issues Adrian Ratiu
2026-03-24  8:37     ` Patrick Steinhardt
2026-03-24 19:19       ` Adrian Ratiu
2026-03-20 11:52   ` [PATCH v2 03/10] hook: rename cb_data_free/alloc -> hook_data_free/alloc Adrian Ratiu
2026-03-20 11:52   ` [PATCH v2 04/10] hook: detect & emit two more bugs Adrian Ratiu
2026-03-20 11:52   ` [PATCH v2 05/10] hook: replace hook_list_clear() -> string_list_clear_func() Adrian Ratiu
2026-03-24  8:37     ` Patrick Steinhardt
2026-03-24 22:33       ` Adrian Ratiu
2026-03-25  5:26         ` Patrick Steinhardt
2026-03-20 11:52   ` [PATCH v2 06/10] hook: make consistent use of friendly-name in docs Adrian Ratiu
2026-03-20 11:52   ` [PATCH v2 07/10] t1800: add test to verify hook execution ordering Adrian Ratiu
2026-03-20 11:52   ` [PATCH v2 08/10] hook: introduce hook_config_cache_entry for per-hook data Adrian Ratiu
2026-03-20 11:52   ` [PATCH v2 09/10] hook: show config scope in git hook list Adrian Ratiu
2026-03-24  8:37     ` Patrick Steinhardt
2026-03-25 11:28       ` Adrian Ratiu
2026-03-20 11:52   ` [PATCH v2 10/10] hook: show disabled hooks in "git hook list" Adrian Ratiu
2026-03-24  8:38     ` Patrick Steinhardt
2026-03-24 16:14       ` Junio C Hamano
2026-03-24 19:23       ` Adrian Ratiu
2026-03-23 16:11   ` [PATCH v2 00/10] config-hook cleanups and two small 'git hook list' features Junio C Hamano
2026-03-24  8:38     ` Patrick Steinhardt
2026-03-24 18:56       ` Adrian Ratiu
2026-03-25 19:54 ` [PATCH v3 00/12] config-hook cleanups and three small git-hook features Adrian Ratiu
2026-03-25 19:54   ` [PATCH v3 01/12] hook: move unsorted_string_list_remove() to string-list.[ch] Adrian Ratiu
2026-03-25 19:54   ` [PATCH v3 02/12] builtin/receive-pack: properly init receive_hook strbuf Adrian Ratiu
2026-03-25 19:54   ` [PATCH v3 03/12] hook: fix minor style issues Adrian Ratiu
2026-03-25 19:54   ` [PATCH v3 04/12] hook: rename cb_data_free/alloc -> hook_data_free/alloc Adrian Ratiu
2026-03-25 19:54   ` [PATCH v3 05/12] hook: detect & emit two more bugs Adrian Ratiu
2026-03-25 19:54   ` [PATCH v3 06/12] hook: replace hook_list_clear() -> string_list_clear_func() Adrian Ratiu
2026-03-25 19:54   ` [PATCH v3 07/12] hook: make consistent use of friendly-name in docs Adrian Ratiu
2026-03-25 19:54   ` [PATCH v3 08/12] t1800: add test to verify hook execution ordering Adrian Ratiu
2026-03-25 19:55   ` [PATCH v3 09/12] hook: introduce hook_config_cache_entry for per-hook data Adrian Ratiu
2026-03-25 19:55   ` [PATCH v3 10/12] hook: show config scope in git hook list Adrian Ratiu
2026-03-25 19:55   ` [PATCH v3 11/12] hook: show disabled hooks in "git hook list" Adrian Ratiu
2026-03-25 19:55   ` [PATCH v3 12/12] hook: reject unknown hook names in git-hook(1) Adrian Ratiu
2026-03-25 21:17   ` [PATCH v3 00/12] config-hook cleanups and three small git-hook features Junio C Hamano
2026-03-26 10:21     ` Adrian Ratiu
2026-03-27  8:04   ` Patrick Steinhardt
2026-03-27 16:11     ` 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=abFC4uLP-JwDoKde@pks.im \
    --to=ps@pks.im \
    --cc=adrian.ratiu@collabora.com \
    --cc=emilyshaffer@google.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=sandals@crustytoothpaste.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox