git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/10] Convert remaining hooks to hook.h
@ 2025-09-25 12:53 Adrian Ratiu
  2025-09-25 12:53 ` [PATCH 01/10] run-command: add stdin callback for parallelization Adrian Ratiu
                   ` (15 more replies)
  0 siblings, 16 replies; 137+ messages in thread
From: Adrian Ratiu @ 2025-09-25 12:53 UTC (permalink / raw)
  To: git
  Cc: Emily Shaffer, Rodrigo Damazio Bovendorp, Junio C Hamano,
	Patrick Steinhardt, Josh Steadmon, Adrian Ratiu

Hello everyone,

This is a continuation of Emily and Aevar's work to convert remaining hooks
to the hook.h interface, by adding and using two new run-command/hook APIs:
 * feeding hook stdin via a callback
 * capturing server-side collated outputs

I've tried to keep the implementations as simple as possible and avoid any
unnecessary copying by feeding the data directly to the hook stdin fds and
even batching the writes of pre/post-receive so we achieve similar perf/data/
syscall efficiency as we had before the callback conversion.

As suggested by Aevar [1], I've removed the string_list API, the extra copies
and the $'\n' assumptions on the data, however I did not go the full zero-copy
route with mmap-ing because I think that will break backwards compatbility. We
could explore that in a future series as an efficientization of the current IPC,
this patch series basically aims for parity with the existing implementation.

This series also unblocks config-based hooks and hooks parallelization which will
follow up in a separate series.

The patch series is based on the master branch, I've pushed it to github [2] and
it also passes CI runs. [3]. Also merged and tested against next with no conflicts.

1: https://lore.kernel.org/git/230209.86y1p7y4fa.gmgdl@evledraar.gmail.com/
2: https://github.com/10ne1/git/tree/dev/aratiu/hooks-conversion-v1
3: https://github.com/10ne1/git/actions/runs/18006589297

Big warm thank you,
Adrian

Adrian Ratiu (1):
  reference-transaction: use hook.h to run hooks

Emily Shaffer (9):
  run-command: add stdin callback for parallelization
  hook: provide stdin via callback
  hook: convert 'post-rewrite' hook in sequencer.c to hook.h
  transport: convert pre-push hook to hook.h
  run-command: allow capturing of collated output
  hooks: allow callers to capture output
  receive-pack: convert 'update' hook to hook.h
  post-update: use hook.h library
  receive-pack: convert receive hooks to hook.h

 builtin/fetch.c             |   2 +-
 builtin/receive-pack.c      | 310 +++++++++++++++++++-----------------
 builtin/submodule--helper.c |   2 +-
 hook.c                      |  11 +-
 hook.h                      |  30 ++++
 refs.c                      |  61 ++++---
 run-command.c               | 115 +++++++++++--
 run-command.h               |  44 ++++-
 sequencer.c                 |  62 +++++---
 submodule.c                 |   2 +-
 t/helper/test-run-command.c |  67 +++++++-
 t/t0061-run-command.sh      |  37 +++++
 transport.c                 |  79 ++++-----
 13 files changed, 547 insertions(+), 275 deletions(-)

-- 
2.49.1


^ permalink raw reply	[flat|nested] 137+ messages in thread

end of thread, other threads:[~2025-12-28 11:32 UTC | newest]

Thread overview: 137+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-25 12:53 [PATCH 00/10] Convert remaining hooks to hook.h Adrian Ratiu
2025-09-25 12:53 ` [PATCH 01/10] run-command: add stdin callback for parallelization Adrian Ratiu
2025-10-02  6:34   ` Patrick Steinhardt
2025-10-02 15:46     ` Junio C Hamano
2025-10-06 13:01       ` Adrian Ratiu
2025-10-06 12:59     ` Adrian Ratiu
2025-10-14 17:35       ` Adrian Ratiu
2025-09-25 12:53 ` [PATCH 02/10] hook: provide stdin via callback Adrian Ratiu
2025-09-25 20:05   ` Junio C Hamano
2025-09-26 12:03     ` Adrian Ratiu
2025-10-10 19:57   ` Emily Shaffer
2025-10-13 14:47     ` Adrian Ratiu
2025-09-25 12:53 ` [PATCH 03/10] hook: convert 'post-rewrite' hook in sequencer.c to hook.h Adrian Ratiu
2025-09-25 20:15   ` Junio C Hamano
2025-09-26 12:29     ` Adrian Ratiu
2025-09-26 14:12   ` Phillip Wood
2025-09-26 15:53     ` Adrian Ratiu
2025-09-29 10:11       ` Phillip Wood
2025-09-26 17:52     ` Junio C Hamano
2025-09-29  7:33       ` Adrian Ratiu
2025-10-02  6:34   ` Patrick Steinhardt
2025-10-08  7:04     ` Adrian Ratiu
2025-09-25 12:53 ` [PATCH 04/10] transport: convert pre-push hook " Adrian Ratiu
2025-09-25 18:58   ` D. Ben Knoble
2025-09-26 13:02     ` Adrian Ratiu
2025-09-26 14:11   ` Phillip Wood
2025-09-29 11:33     ` Adrian Ratiu
2025-09-25 12:53 ` [PATCH 05/10] reference-transaction: use hook.h to run hooks Adrian Ratiu
2025-09-25 21:45   ` Junio C Hamano
2025-09-26 13:03     ` Adrian Ratiu
2025-10-02  6:34   ` Patrick Steinhardt
2025-10-08 12:26     ` Adrian Ratiu
2025-09-25 12:53 ` [PATCH 06/10] run-command: allow capturing of collated output Adrian Ratiu
2025-09-25 21:52   ` Junio C Hamano
2025-09-26 14:14     ` Adrian Ratiu
2025-09-25 12:53 ` [PATCH 07/10] hooks: allow callers to capture output Adrian Ratiu
2025-09-25 12:53 ` [PATCH 08/10] receive-pack: convert 'update' hook to hook.h Adrian Ratiu
2025-09-25 21:53   ` Junio C Hamano
2025-10-10 19:57   ` Emily Shaffer
2025-10-17  8:27     ` Adrian Ratiu
2025-09-25 12:53 ` [PATCH 09/10] post-update: use hook.h library Adrian Ratiu
2025-09-25 18:02 ` [PATCH 10/10] receive-pack: convert receive hooks to hook.h Adrian Ratiu
2025-10-10 19:57 ` [PATCH 00/10] Convert remaining " Emily Shaffer
2025-10-17 14:15 ` [PATCH v2 " Adrian Ratiu
2025-10-17 14:15   ` [PATCH v2 01/10] run-command: add stdin callback for parallelization Adrian Ratiu
2025-10-21  7:40     ` Patrick Steinhardt
2025-10-17 14:15   ` [PATCH v2 02/10] hook: provide stdin via callback Adrian Ratiu
2025-10-21  7:41     ` Patrick Steinhardt
2025-10-21  7:41     ` Patrick Steinhardt
2025-10-21 14:44       ` Adrian Ratiu
2025-10-17 14:15   ` [PATCH v2 03/10] hook: convert 'post-rewrite' hook in sequencer.c to hook API Adrian Ratiu
2025-10-21  7:41     ` Patrick Steinhardt
2025-10-21 15:44       ` Adrian Ratiu
2025-10-17 14:15   ` [PATCH v2 04/10] transport: convert pre-push " Adrian Ratiu
2025-10-21  7:41     ` Patrick Steinhardt
2025-10-21 16:04       ` Adrian Ratiu
2025-10-17 14:15   ` [PATCH v2 05/10] reference-transaction: use hook API instead of run-command Adrian Ratiu
2025-10-17 14:15   ` [PATCH v2 06/10] hook: allow overriding the ungroup option Adrian Ratiu
2025-10-17 14:15   ` [PATCH v2 07/10] run-command: allow capturing of collated output Adrian Ratiu
2025-10-21  7:41     ` Patrick Steinhardt
2025-10-21 16:25       ` Adrian Ratiu
2025-10-17 14:15   ` [PATCH v2 08/10] hooks: allow callers to capture output Adrian Ratiu
2025-10-17 14:15   ` [PATCH v2 09/10] receive-pack: convert update hooks to new API Adrian Ratiu
2025-10-28 18:39     ` Kristoffer Haugsbakk
2025-10-17 14:15   ` [PATCH v2 10/10] receive-pack: convert receive hooks to hook API Adrian Ratiu
2025-10-21  7:41     ` Patrick Steinhardt
2025-10-28 18:42     ` Kristoffer Haugsbakk
2025-10-29 13:46       ` Adrian Ratiu
2025-10-29 13:50         ` Kristoffer Haugsbakk
2025-11-15 19:48     ` Junio C Hamano
2025-11-17 16:51       ` Adrian Ratiu
2025-10-21  7:40   ` [PATCH v2 00/10] Convert remaining hooks to hook.h Patrick Steinhardt
2025-10-21 16:34     ` Adrian Ratiu
2025-11-24 17:20 ` [PATCH v3 " Adrian Ratiu
2025-11-24 17:20   ` [PATCH v3 01/10] run-command: add stdin callback for parallelization Adrian Ratiu
2025-11-25 23:15     ` Junio C Hamano
2025-11-27 12:00       ` Adrian Ratiu
2025-11-24 17:20   ` [PATCH v3 02/10] hook: provide stdin via callback Adrian Ratiu
2025-11-29 13:03     ` Adrian Ratiu
2025-11-29 22:21       ` Junio C Hamano
2025-12-01 13:26         ` Adrian Ratiu
2025-11-24 17:20   ` [PATCH v3 03/10] hook: convert 'post-rewrite' hook in sequencer.c to hook API Adrian Ratiu
2025-11-24 17:20   ` [PATCH v3 04/10] transport: convert pre-push " Adrian Ratiu
2025-11-24 22:55     ` Junio C Hamano
2025-11-27 14:24       ` Adrian Ratiu
2025-11-24 17:20   ` [PATCH v3 05/10] reference-transaction: use hook API instead of run-command Adrian Ratiu
2025-11-24 17:20   ` [PATCH v3 06/10] hook: allow overriding the ungroup option Adrian Ratiu
2025-11-24 17:20   ` [PATCH v3 07/10] run-command: allow capturing of collated output Adrian Ratiu
2025-11-24 17:20   ` [PATCH v3 08/10] hooks: allow callers to capture output Adrian Ratiu
2025-11-24 17:20   ` [PATCH v3 09/10] receive-pack: convert update hooks to new API Adrian Ratiu
2025-11-24 17:20   ` [PATCH v3 10/10] receive-pack: convert receive hooks to hook API Adrian Ratiu
2025-12-04 14:15 ` [PATCH v4 00/11] Convert remaining hooks to hook.h Adrian Ratiu
2025-12-04 14:15   ` [PATCH v4 01/11] run-command: add first helper for pp child states Adrian Ratiu
2025-12-04 14:15   ` [PATCH v4 02/11] run-command: add stdin callback for parallelization Adrian Ratiu
2025-12-04 14:15   ` [PATCH v4 03/11] hook: provide stdin via callback Adrian Ratiu
2025-12-16  8:08     ` Patrick Steinhardt
2025-12-04 14:15   ` [PATCH v4 04/11] hook: convert 'post-rewrite' hook in sequencer.c to hook API Adrian Ratiu
2025-12-04 14:15   ` [PATCH v4 05/11] transport: convert pre-push " Adrian Ratiu
2025-12-16  8:08     ` Patrick Steinhardt
2025-12-16  9:09       ` Adrian Ratiu
2025-12-16  9:30         ` Patrick Steinhardt
2025-12-17 23:07           ` Junio C Hamano
2025-12-04 14:15   ` [PATCH v4 06/11] reference-transaction: use hook API instead of run-command Adrian Ratiu
2025-12-04 14:15   ` [PATCH v4 07/11] hook: allow overriding the ungroup option Adrian Ratiu
2025-12-04 14:15   ` [PATCH v4 08/11] run-command: allow capturing of collated output Adrian Ratiu
2025-12-04 14:15   ` [PATCH v4 09/11] hooks: allow callers to capture output Adrian Ratiu
2025-12-04 14:15   ` [PATCH v4 10/11] receive-pack: convert update hooks to new API Adrian Ratiu
2025-12-16  8:08     ` Patrick Steinhardt
2025-12-16  9:22       ` Adrian Ratiu
2025-12-04 14:15   ` [PATCH v4 11/11] receive-pack: convert receive hooks to hook API Adrian Ratiu
2025-12-18 17:11 ` [PATCH v5 00/11] Convert remaining hooks to hook.h Adrian Ratiu
2025-12-18 17:11   ` [PATCH v5 01/11] run-command: add first helper for pp child states Adrian Ratiu
2025-12-18 17:11   ` [PATCH v5 02/11] run-command: add stdin callback for parallelization Adrian Ratiu
2025-12-18 17:11   ` [PATCH v5 03/11] hook: provide stdin via callback Adrian Ratiu
2025-12-18 17:11   ` [PATCH v5 04/11] hook: convert 'post-rewrite' hook in sequencer.c to hook API Adrian Ratiu
2025-12-18 17:11   ` [PATCH v5 05/11] transport: convert pre-push " Adrian Ratiu
2025-12-18 17:11   ` [PATCH v5 06/11] reference-transaction: use hook API instead of run-command Adrian Ratiu
2025-12-18 17:11   ` [PATCH v5 07/11] hook: allow overriding the ungroup option Adrian Ratiu
2025-12-18 17:11   ` [PATCH v5 08/11] run-command: allow capturing of collated output Adrian Ratiu
2025-12-18 17:11   ` [PATCH v5 09/11] hooks: allow callers to capture output Adrian Ratiu
2025-12-18 17:11   ` [PATCH v5 10/11] receive-pack: convert update hooks to new API Adrian Ratiu
2025-12-18 17:11   ` [PATCH v5 11/11] receive-pack: convert receive hooks to hook API Adrian Ratiu
2025-12-19 12:38     ` Patrick Steinhardt
2025-12-20 10:40       ` Adrian Ratiu
2025-12-26 12:23 ` [PATCH v6 00/11] Convert remaining hooks to hook.h Adrian Ratiu
2025-12-26 12:23   ` [PATCH v6 01/11] run-command: add first helper for pp child states Adrian Ratiu
2025-12-26 12:23   ` [PATCH v6 02/11] run-command: add stdin callback for parallelization Adrian Ratiu
2025-12-26 12:23   ` [PATCH v6 03/11] hook: provide stdin via callback Adrian Ratiu
2025-12-26 12:23   ` [PATCH v6 04/11] hook: convert 'post-rewrite' hook in sequencer.c to hook API Adrian Ratiu
2025-12-26 12:23   ` [PATCH v6 05/11] transport: convert pre-push " Adrian Ratiu
2025-12-26 12:23   ` [PATCH v6 06/11] reference-transaction: use hook API instead of run-command Adrian Ratiu
2025-12-26 12:23   ` [PATCH v6 07/11] hook: allow overriding the ungroup option Adrian Ratiu
2025-12-26 12:23   ` [PATCH v6 08/11] run-command: allow capturing of collated output Adrian Ratiu
2025-12-26 12:23   ` [PATCH v6 09/11] hooks: allow callers to capture output Adrian Ratiu
2025-12-26 12:23   ` [PATCH v6 10/11] receive-pack: convert update hooks to new API Adrian Ratiu
2025-12-26 12:23   ` [PATCH v6 11/11] receive-pack: convert receive hooks to hook API Adrian Ratiu
2025-12-28 11:32   ` [PATCH v6 00/11] Convert remaining hooks to hook.h Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).