public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: Adrian Ratiu <adrian.ratiu@collabora•com>
To: git@vger•kernel.org
Cc: Emily Shaffer <emilyshaffer@google•com>,
	Rodrigo Damazio Bovendorp <rdamazio@google•com>,
	Junio C Hamano <gitster@pobox•com>,
	Patrick Steinhardt <ps@pks•im>,
	Josh Steadmon <steadmon@google•com>,
	Ben Knoble <ben.knoble@gmail•com>,
	Phillip Wood <phillip.wood123@gmail•com>,
	Adrian Ratiu <adrian.ratiu@collabora•com>
Subject: [PATCH v2 00/10] Convert remaining hooks to hook.h
Date: Fri, 17 Oct 2025 17:15:34 +0300	[thread overview]
Message-ID: <20251017141544.1538542-1-adrian.ratiu@collabora.com> (raw)
In-Reply-To: <20250925125352.1728840-1-adrian.ratiu@collabora.com>

Hello everyone,

This is v2 of the series which converts the remaining hooks to the new API.

I addressed all the feedback received in v1, with two small exceptions
(the ones starting with "Opted not to" in the below Changes list).

I had a minor conflict with an upstream change [1] which was trivial to fix.

I added 1 new commit and squashed together two commits (the simplified update
hooks), so in total it's still 10 patches.

The plan is to follow this up with another series which enables config-based
hooks and parallel hook execution, where possible.

As always this is based on the latest master branch, I've pushed it to GitHub
and ran the CI pipeline [3]. The Win+Meson "missing libgitcore.a" and doc
"invalid escape sequence" failures seem to be unrelated, since I get them
without these patches.

1: https://github.com/git/git/commit/22e7bc801cd9c5e5b5c4489b631be28e506fec42
2: https://github.com/10ne1/git/tree/dev/aratiu/hooks-conversion-v2
3: https://github.com/10ne1/git/actions/runs/18593709082

Changes between v1 -> v2:
* Added a new commit with a mechanism to override ungroup options (Junio)
* Addded a BUG if hook path_to_stdin and feed_pipe are both provided (Junio)
* The feed_pipe cb can be set independently from path_to_stdin (Junio)
* Simplified the post-rewrite callback (Patrick, Phillip and Junio)
* Document that hook caller owns the feed_pipe_ctx (Junio)
* Removed unnecessary "child" -> "notes_cp" renames (Phillip)
* Reuse strbuf inside pre-push cb to avoid multiple alloc (Phillip)
* Simplified pre-push hook cb logic (Phillip)
* Rewrote reference-transaction cb logic to mirror pre-push (Patrick)
* Simplified the update hook cb by removing the keepalive logic (Emily)
* Squashed the simplified update and post-update conversions
* Iterator types, if conditions and other small fixes (Patrick)
* Fixed a conflict in refs.c with an upstream for loop sign compare check
* Opted not to use -1 to signify no fd value instead of 0, because I'd have to
  significantly rework the run-command.h .in/.out/.err API (Patrick)
* Opted not to move sigchain_push(SIGPIPE, SIG_IGN); into pp_buffer_stdin())
  because it will called too many times inside the process loop (Patrick)
* Added Helped-by: Emily Shaffer tag to the reference-transaction coversion
* Comments, typos, stray lines, commit rewordings (Ben, Patrick, Emily, Junio)

Adrian Ratiu (2):
  reference-transaction: use hook API instead of run-command
  hook: allow overriding the ungroup option

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

 builtin/hook.c              |   6 +
 builtin/receive-pack.c      | 289 +++++++++++++++++-------------------
 commit.c                    |   3 +
 hook.c                      |  21 ++-
 hook.h                      |  36 +++++
 refs.c                      | 101 +++++++------
 run-command.c               | 110 ++++++++++++--
 run-command.h               |  42 ++++++
 sequencer.c                 |  42 +++---
 t/helper/test-run-command.c |  67 ++++++++-
 t/t0061-run-command.sh      |  38 +++++
 transport.c                 |  83 +++++------
 12 files changed, 557 insertions(+), 281 deletions(-)

-- 
2.49.1


  parent reply	other threads:[~2025-10-17 14:17 UTC|newest]

Thread overview: 187+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 ` Adrian Ratiu [this message]
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
2026-01-18 12:23     ` SZEDER Gábor
2026-01-18 18:30       ` 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
2026-01-05 10:52     ` Adrian Ratiu
2026-01-05 12:13       ` Patrick Steinhardt
2026-01-21 21:54 ` [PATCH v7 00/12] " Adrian Ratiu
2026-01-21 21:54   ` [PATCH v7 01/12] t1800: add hook output stream tests Adrian Ratiu
2026-01-21 22:16     ` Junio C Hamano
2026-01-22  9:19       ` Adrian Ratiu
2026-01-21 21:54   ` [PATCH v7 02/12] run-command: add first helper for pp child states Adrian Ratiu
2026-01-21 23:01     ` Junio C Hamano
2026-01-22  9:21       ` Adrian Ratiu
2026-01-21 21:54   ` [PATCH v7 03/12] run-command: add stdin callback for parallelization Adrian Ratiu
2026-01-21 21:54   ` [PATCH v7 04/12] hook: provide stdin via callback Adrian Ratiu
2026-01-21 21:54   ` [PATCH v7 05/12] hook: convert 'post-rewrite' hook in sequencer.c to hook API Adrian Ratiu
2026-01-21 21:54   ` [PATCH v7 06/12] hook: allow separate std[out|err] streams Adrian Ratiu
2026-01-23  7:19     ` Patrick Steinhardt
2026-01-23  7:47       ` Adrian Ratiu
2026-01-21 21:54   ` [PATCH v7 07/12] transport: convert pre-push to hook API Adrian Ratiu
2026-01-21 21:54   ` [PATCH v7 08/12] reference-transaction: use hook API instead of run-command Adrian Ratiu
2026-01-21 21:54   ` [PATCH v7 09/12] hook: add jobs option Adrian Ratiu
2026-01-21 21:54   ` [PATCH v7 10/12] run-command: poll child stdin in addition to stdout Adrian Ratiu
2026-01-21 22:04     ` Kristoffer Haugsbakk
2026-01-22  9:57       ` Adrian Ratiu
2026-01-21 23:11     ` Junio C Hamano
2026-01-22 10:58       ` Adrian Ratiu
2026-01-22 17:20         ` Junio C Hamano
2026-01-26 23:20     ` Emily Shaffer
2026-01-27  0:11       ` Junio C Hamano
2026-01-27 10:10         ` Adrian Ratiu
2026-01-21 21:54   ` [PATCH v7 11/12] receive-pack: convert update hooks to new API Adrian Ratiu
2026-01-21 22:14     ` Kristoffer Haugsbakk
2026-01-22  9:26       ` Adrian Ratiu
2026-01-27  0:12     ` Emily Shaffer
2026-01-27 13:05       ` Adrian Ratiu
2026-01-21 21:54   ` [PATCH v7 12/12] receive-pack: convert receive hooks to hook API Adrian Ratiu
2026-01-28 21:39 ` [PATCH v8 00/12] Convert remaining hooks to hook.h Adrian Ratiu
2026-01-28 21:39   ` [PATCH v8 01/12] t1800: add hook output stream tests Adrian Ratiu
2026-01-28 21:39   ` [PATCH v8 02/12] run-command: add helper for pp child states Adrian Ratiu
2026-01-28 21:39   ` [PATCH v8 03/12] run-command: add stdin callback for parallelization Adrian Ratiu
2026-01-28 21:39   ` [PATCH v8 04/12] hook: provide stdin via callback Adrian Ratiu
2026-01-28 21:39   ` [PATCH v8 05/12] hook: convert 'post-rewrite' hook in sequencer.c to hook API Adrian Ratiu
2026-01-28 21:39   ` [PATCH v8 06/12] hook: allow separate std[out|err] streams Adrian Ratiu
2026-02-02  3:17     ` Chris Darroch
2026-02-02 16:32       ` Junio C Hamano
2026-01-28 21:39   ` [PATCH v8 07/12] transport: convert pre-push to hook API Adrian Ratiu
2026-01-28 21:39   ` [PATCH v8 08/12] reference-transaction: use hook API instead of run-command Adrian Ratiu
2026-01-28 21:39   ` [PATCH v8 09/12] hook: add jobs option Adrian Ratiu
2026-01-28 21:39   ` [PATCH v8 10/12] run-command: poll child input in addition to output Adrian Ratiu
2026-01-28 21:39   ` [PATCH v8 11/12] receive-pack: convert update hooks to new API Adrian Ratiu
2026-01-28 21:39   ` [PATCH v8 12/12] receive-pack: convert receive hooks to hook API Adrian Ratiu

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=20251017141544.1538542-1-adrian.ratiu@collabora.com \
    --to=adrian.ratiu@collabora$(echo .)com \
    --cc=ben.knoble@gmail$(echo .)com \
    --cc=emilyshaffer@google$(echo .)com \
    --cc=git@vger$(echo .)kernel.org \
    --cc=gitster@pobox$(echo .)com \
    --cc=phillip.wood123@gmail$(echo .)com \
    --cc=ps@pks$(echo .)im \
    --cc=rdamazio@google$(echo .)com \
    --cc=steadmon@google$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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