git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 09/10] hook: show config scope in git hook list

From
Adrian Ratiu <adrian.ratiu@collabora.com>
Date
Mar 25, 2026, 11:28 UTC
Message-ID
<87v7ekrvvr.fsf@gentoo.mail-host-address-is-not-set>
In-Reply-To
<acJNZ6Tu71YSL57o@pks.im>
On Tue, 24 Mar 2026, Patrick Steinhardt <ps@pks.im> wrote:
Show 28 quoted lines
> On Fri, Mar 20, 2026 at 01:52:10PM +0200, Adrian Ratiu wrote:
>> diff --git a/Documentation/git-hook.adoc b/Documentation/git-hook.adoc
>> index 966388660a..e7d399ae57 100644
>> --- a/Documentation/git-hook.adoc
>> +++ b/Documentation/git-hook.adoc
>> @@ -9,7 +9,7 @@ SYNOPSIS
>>  --------
>>  [verse]
>>  'git hook' run [--ignore-missing] [--to-stdin=<path>] <hook-name> [-- <hook-args>]
>> -'git hook' list [-z] <hook-name>
>> +'git hook' list [-z] [--show-scope] <hook-name>
>>  
>>  DESCRIPTION
>>  -----------
>
> Taking a random patch that relates to the git-hook(1) command. I was
> wondering whether we want to introduce another change here that will
> cause git-hook(1) to bail out when given an unknown hook name.
>
> I know that we explicitly want to allow having custom hook events, but I
> would argue that 99% of all invocations will use any of Git's own hook
> events. And given that it's really easy to misspell the "prereceive"
> hook (which really is "pre-receive") I think it would be nice if we told
> the user that it's an unknown hook instead of silently doing nothing.
>
> To cover the original use case we could then add something like
> "--allow-unknown-hook-name" to make the caller explicitly accept non-Git
> hook events.
I think this makes sense.
I just wrote and tested the implementation and it works nicely.
I'll include it in v3.
Show 29 quoted lines
>> diff --git a/t/t1800-hook.sh b/t/t1800-hook.sh
>> index 7eee84fc39..22cca15fda 100755
>> --- a/t/t1800-hook.sh
>> +++ b/t/t1800-hook.sh
>> @@ -408,6 +408,25 @@ test_expect_success 'configured hooks run before hookdir hook' '
>>  	test_cmp expected actual
>>  '
>>  
>> +test_expect_success 'git hook list --show-scope shows config scope' '
>> +	test_config_global hook.global-hook.command "echo global" &&
>> +	test_config_global hook.global-hook.event test-hook --add &&
>> +	test_config hook.local-hook.command "echo local" &&
>> +	test_config hook.local-hook.event test-hook --add &&
>> +
>> +	cat >expected <<-\EOF &&
>> +	global	global-hook
>> +	local	local-hook
>> +	EOF
>> +	git hook list --show-scope test-hook >actual &&
>> +	test_cmp expected actual &&
>> +
>> +	# without --show-scope the scope must not appear
>> +	git hook list test-hook >actual &&
>> +	test_grep ! "^global	" actual &&
>> +	test_grep ! "^local	" actual
>> +'
>
> Do we also want to add a hook discovered via ".git/hooks" to show how it
> interacts with the new flag?
Yes, good catch, I'll add it in v3.
Previous: Patrick SteinhardtNext: Adrian Ratiu
Message 47 of 71 in “config-hook cleanups and two small 'git hook list' features”
  1. 00/10 config-hook cleanups and two small 'git hook list' featuresAdrian Ratiu, Mar 9, 2026
  2. 01/10 hook: move unsorted_string_list_remove() to string-list.[ch]Adrian Ratiu, Mar 9, 2026
  3. SZEDER GáborMar 10, 2026
  4. Adrian RatiuMar 11, 2026
  5. 02/10 hook: fix minor style issuesAdrian Ratiu, Mar 9, 2026
  6. Eric SunshineMar 9, 2026
  7. 03/10 hook: rename cb_data_free/alloc -> hook_data_free/allocAdrian Ratiu, Mar 9, 2026
  8. Patrick SteinhardtMar 11, 2026
  9. Adrian RatiuMar 11, 2026
  10. 04/10 hook: detect & emit two more bugsAdrian Ratiu, Mar 9, 2026
  11. 05/10 hook: replace hook_list_clear() -> string_list_clear_func()Adrian Ratiu, Mar 9, 2026
  12. Eric SunshineMar 9, 2026
  13. Adrian RatiuMar 10, 2026
  14. 06/10 hook: make consistent use of friendly-name in docsAdrian Ratiu, Mar 9, 2026
  15. 08/10 hook: refactor hook_config_cache from strmap to named structAdrian Ratiu, Mar 9, 2026
  16. Junio C HamanoMar 9, 2026
  17. Adrian RatiuMar 10, 2026
  18. 07/10 t1800: add test to verify hook execution orderingAdrian Ratiu, Mar 9, 2026
  19. 09/10 hook: show config scope in git hook listAdrian Ratiu, Mar 9, 2026
  20. Junio C HamanoMar 9, 2026
  21. Adrian RatiuMar 10, 2026
  22. Patrick SteinhardtMar 11, 2026
  23. Adrian RatiuMar 11, 2026
  24. 10/10 hook: show disabled hooks in "git hook list"Adrian Ratiu, Mar 9, 2026
  25. Patrick SteinhardtMar 11, 2026
  26. Adrian RatiuMar 11, 2026
  27. Patrick SteinhardtMar 11, 2026
  28. Junio C HamanoMar 9, 2026
  29. Adrian RatiuMar 10, 2026
  30. Junio C HamanoMar 9, 2026
  31. 00/10 config-hook cleanups and two small 'git hook list' featuresAdrian Ratiu, Mar 20, 2026
  32. 01/10 hook: move unsorted_string_list_remove() to string-list.[ch]Adrian Ratiu, Mar 20, 2026
  33. 03/10 hook: rename cb_data_free/alloc -> hook_data_free/allocAdrian Ratiu, Mar 20, 2026
  34. 04/10 hook: detect & emit two more bugsAdrian Ratiu, Mar 20, 2026
  35. 05/10 hook: replace hook_list_clear() -> string_list_clear_func()Adrian Ratiu, Mar 20, 2026
  36. Patrick SteinhardtMar 24, 2026
  37. Adrian RatiuMar 24, 2026
  38. Patrick SteinhardtMar 25, 2026
  39. 06/10 hook: make consistent use of friendly-name in docsAdrian Ratiu, Mar 20, 2026
  40. 07/10 t1800: add test to verify hook execution orderingAdrian Ratiu, Mar 20, 2026
  41. 08/10 hook: introduce hook_config_cache_entry for per-hook dataAdrian Ratiu, Mar 20, 2026
  42. 02/10 hook: fix minor style issuesAdrian Ratiu, Mar 20, 2026
  43. Patrick SteinhardtMar 24, 2026
  44. Adrian RatiuMar 24, 2026
  45. 09/10 hook: show config scope in git hook listAdrian Ratiu, Mar 20, 2026
  46. Patrick SteinhardtMar 24, 2026
  47. Adrian RatiuMar 25, 2026
  48. 10/10 hook: show disabled hooks in "git hook list"Adrian Ratiu, Mar 20, 2026
  49. Patrick SteinhardtMar 24, 2026
  50. Junio C HamanoMar 24, 2026
  51. Adrian RatiuMar 24, 2026
  52. Junio C HamanoMar 23, 2026
  53. Patrick SteinhardtMar 24, 2026
  54. Adrian RatiuMar 24, 2026
  55. 00/12 config-hook cleanups and three small git-hook featuresAdrian Ratiu, Mar 25, 2026
  56. 01/12 hook: move unsorted_string_list_remove() to string-list.[ch]Adrian Ratiu, Mar 25, 2026
  57. 02/12 builtin/receive-pack: properly init receive_hook strbufAdrian Ratiu, Mar 25, 2026
  58. 04/12 hook: rename cb_data_free/alloc -> hook_data_free/allocAdrian Ratiu, Mar 25, 2026
  59. 03/12 hook: fix minor style issuesAdrian Ratiu, Mar 25, 2026
  60. 05/12 hook: detect & emit two more bugsAdrian Ratiu, Mar 25, 2026
  61. 06/12 hook: replace hook_list_clear() -> string_list_clear_func()Adrian Ratiu, Mar 25, 2026
  62. 07/12 hook: make consistent use of friendly-name in docsAdrian Ratiu, Mar 25, 2026
  63. 08/12 t1800: add test to verify hook execution orderingAdrian Ratiu, Mar 25, 2026
  64. 09/12 hook: introduce hook_config_cache_entry for per-hook dataAdrian Ratiu, Mar 25, 2026
  65. 10/12 hook: show config scope in git hook listAdrian Ratiu, Mar 25, 2026
  66. 11/12 hook: show disabled hooks in "git hook list"Adrian Ratiu, Mar 25, 2026
  67. 12/12 hook: reject unknown hook names in git-hook(1)Adrian Ratiu, Mar 25, 2026
  68. Junio C HamanoMar 25, 2026
  69. Adrian RatiuMar 26, 2026
  70. Patrick SteinhardtMar 27, 2026
  71. Junio C HamanoMar 27, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.