From: Li Chen <me@linux.beauty>
To: "phillipwood" <phillip.wood@dunelm.org.uk>,
"git" <git@vger.kernel.org>, "Junio C Hamano" <gitster@pobox.com>,
"Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com>
Subject: [PATCH v5 00/29] rebase: support --trailer
Date: Wed, 22 Oct 2025 13:39:20 +0800 [thread overview]
Message-ID: <20251022053951.602605-1-me@linux.beauty> (raw)
From: Li Chen <chenl311@chinatelecom.cn>
This patch series teaches git rebase a new
--trailer <text> option and, as a prerequisite, moves all trailer
handling out of the external interpret-trailers helper and into the
builtin code path, as suggested by Phillip Wood.
Patch 0 switches trailer.c to an in-memory implementation
(amend_strbuf_with_trailers()). It removes every fork/exec.
Patch 1~8 fix all reviewer comments from v3 for patch 0.
Patch 9 builds on that helper to implement
git rebase --trailer. When the option is given we:
force the merge backend (apply/am backend lacks a message filter),
automatically enable --force-rebase so that fast-forwarded
commits are rewritten, and append the requested trailer(s) to every
rewritten commit.
State is stored in $state_dir/trailer so an interrupted rebase can
resume safely. A dedicated test-suite (t3440) exercises plain,
conflict, --root, invalid-input scenarios and etc.
The rest patches address all reviewer comments from v3 for patch 9.
All t/*.sh testcases have run successfully.
v5: fix all Kristoffer's review comments form v4[3] in place and without new patches.
v4: fix all reviewer comments in v3. [2], and add patch 1~8 & 10~29 to fix review comments.
v3: merges the remaining trailer paths into one in-process helper, dropping the
duplicate code, as pointed by Junio and Phillip [1]
v2: fix issues pointed by Phillip
RFC link: https://lore.kernel.org/git/196a5ac1393.f5b4db7d187309.2451613571977217927@linux.beauty/
Comments welcome!
[1]: https://lore.kernel.org/git/xmqq8qlzkukw.fsf@gitster.g/
[2]: https://lore.kernel.org/git/20250803150059.402017-1-me@linux.beauty/
[3]: https://lore.kernel.org/git/20251014122452.1851103-1-me@linux.beauty/
Li Chen (29):
trailer: append trailers in-process and drop the fork to
`interpret-trailers`
trailer: restore interpret_trailers helper
trailer: drop --trailer prefix handling in amend helper
trailer: move config_head and arg_head to if storage
trailer: use bool for had_trailer_before
interpret-trailers: buffer stdout output
trailer: mirror interpret-trailers output flow
trailer: handle trailer append failures gently
rebase: support --trailer
rebase: inline trailer state paths
rebase: reuse buffer for trailer args
rebase: drop redundant strbuf_release call
rebase: skip stripping of --trailer option prefix
rebase: die on invalid trailer args
rebase: validate trailers with configured separators
sequencer: add trailers to message before writing file
t3440: create expect files at point of use
t3440: check apply backend error includes option
t3440: use test_commit_message for trailer checks
t3440: drop redundant resets and pass branch to rebase where needed
t3440: assert trailer on HEAD after conflict rebase
rebase: persist --trailer options across restarts
t3440: remove redundant --keep-empty
t3440: use helper for trailer checks
t3440: test --trailer without values
t3440: convert ex.com to example.com
t3440: ensure trailers persist after rebase continue
t3440: exercise trailer config mapping
sequencer: honor --trailer with fixup -C
Documentation/git-rebase.adoc | 9 ++-
builtin/commit.c | 2 +-
builtin/interpret-trailers.c | 94 +++++-------------------
builtin/rebase.c | 50 +++++++++++++
builtin/tag.c | 3 +-
sequencer.c | 34 +++++++++
sequencer.h | 4 +-
t/meson.build | 1 +
t/t3440-rebase-trailer.sh | 134 ++++++++++++++++++++++++++++++++++
trailer.c | 130 ++++++++++++++++++++++++++++++---
trailer.h | 23 +++++-
wrapper.c | 16 ++++
wrapper.h | 6 ++
13 files changed, 412 insertions(+), 94 deletions(-)
create mode 100755 t/t3440-rebase-trailer.sh
--
2.51.0
next reply other threads:[~2025-10-22 5:40 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-22 5:39 Li Chen [this message]
2025-10-22 5:39 ` [PATCH v5 01/29] trailer: append trailers in-process and drop the fork to `interpret-trailers` Li Chen
2025-10-23 13:21 ` Phillip Wood
2025-11-04 11:53 ` Li Chen
2025-10-22 5:39 ` [PATCH v5 02/29] trailer: restore interpret_trailers helper Li Chen
2025-10-22 5:39 ` [PATCH v5 03/29] trailer: drop --trailer prefix handling in amend helper Li Chen
2025-10-22 5:39 ` [PATCH v5 04/29] trailer: move config_head and arg_head to if storage Li Chen
2025-10-22 5:39 ` [PATCH v5 05/29] trailer: use bool for had_trailer_before Li Chen
2025-10-22 5:39 ` [PATCH v5 06/29] interpret-trailers: buffer stdout output Li Chen
2025-10-22 5:39 ` [PATCH v5 07/29] trailer: mirror interpret-trailers output flow Li Chen
2025-10-22 5:39 ` [PATCH v5 08/29] trailer: handle trailer append failures gently Li Chen
2025-10-22 5:39 ` [PATCH v5 09/29] rebase: support --trailer Li Chen
2025-10-23 13:21 ` Phillip Wood
2025-10-22 5:39 ` [PATCH v5 10/29] rebase: inline trailer state paths Li Chen
2025-10-22 5:39 ` [PATCH v5 11/29] rebase: reuse buffer for trailer args Li Chen
2025-10-22 5:39 ` [PATCH v5 12/29] rebase: drop redundant strbuf_release call Li Chen
2025-10-22 5:39 ` [PATCH v5 13/29] rebase: skip stripping of --trailer option prefix Li Chen
2025-10-22 5:39 ` [PATCH v5 14/29] rebase: die on invalid trailer args Li Chen
2025-10-22 5:39 ` [PATCH v5 15/29] rebase: validate trailers with configured separators Li Chen
2025-10-22 5:39 ` [PATCH v5 16/29] sequencer: add trailers to message before writing file Li Chen
2025-10-22 5:39 ` [PATCH v5 17/29] t3440: create expect files at point of use Li Chen
2025-10-22 5:39 ` [PATCH v5 18/29] t3440: check apply backend error includes option Li Chen
2025-10-22 5:39 ` [PATCH v5 19/29] t3440: use test_commit_message for trailer checks Li Chen
2025-10-22 5:39 ` [PATCH v5 20/29] t3440: drop redundant resets and pass branch to rebase where needed Li Chen
2025-10-22 5:39 ` [PATCH v5 21/29] t3440: assert trailer on HEAD after conflict rebase Li Chen
2025-10-22 5:39 ` [PATCH v5 22/29] rebase: persist --trailer options across restarts Li Chen
2025-10-22 5:39 ` [PATCH v5 23/29] t3440: remove redundant --keep-empty Li Chen
2025-10-22 5:39 ` [PATCH v5 24/29] t3440: use helper for trailer checks Li Chen
2025-10-22 5:39 ` [PATCH v5 25/29] t3440: test --trailer without values Li Chen
2025-10-22 5:39 ` [PATCH v5 26/29] t3440: convert ex.com to example.com Li Chen
2025-10-22 5:39 ` [PATCH v5 27/29] t3440: ensure trailers persist after rebase continue Li Chen
2025-10-22 5:39 ` [PATCH v5 28/29] t3440: exercise trailer config mapping Li Chen
2025-10-22 5:39 ` [PATCH v5 29/29] sequencer: honor --trailer with fixup -C Li Chen
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=20251022053951.602605-1-me@linux.beauty \
--to=me@linux.beauty \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=kristofferhaugsbakk@fastmail.com \
--cc=phillip.wood@dunelm.org.uk \
/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.