public inbox for git@vger.kernel.org
 help / color / mirror / Atom feed
From: Li Chen <me@linux.beauty>
To: "phillipwood" <phillip.wood@dunelm.org.uk>,
	"git" <git@vger.kernel.org>, "Junio C Hamano" <gitster@pobox.com>
Subject: [PATCH v4 29/29] sequencer: honor --trailer with fixup -C
Date: Tue, 14 Oct 2025 20:24:42 +0800	[thread overview]
Message-ID: <20251014122452.1851103-30-me@linux.beauty> (raw)
In-Reply-To: <20251014122452.1851103-1-me@linux.beauty>

Add an interactive rebase test that exercises
todo lists containing fixup and fixup -C commands,
and teach append_squash_message() to append trailers
when replacing the commit message.

Signed-off-by: Li Chen <chenl311@chinatelecom.cn>
---
 sequencer.c               |  4 ++++
 t/t3440-rebase-trailer.sh | 27 +++++++++++++++++++++++++++
 2 files changed, 31 insertions(+)

diff --git a/sequencer.c b/sequencer.c
index c02364cfce..fbf35cb474 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -2027,6 +2027,10 @@ static int append_squash_message(struct strbuf *buf, const char *body,
 		if (opts->signoff)
 			append_signoff(buf, 0, 0);
 
+		if (opts->trailer_args.nr &&
+			amend_strbuf_with_trailers(buf, &opts->trailer_args))
+			return error(_("unable to add trailers to commit message"));
+
 		if ((command == TODO_FIXUP) &&
 		    (flag & TODO_REPLACE_FIXUP_MSG) &&
 		    (file_exists(rebase_path_fixup_msg()) ||
diff --git a/t/t3440-rebase-trailer.sh b/t/t3440-rebase-trailer.sh
index ca0619655e..d0526ea0e9 100755
--- a/t/t3440-rebase-trailer.sh
+++ b/t/t3440-rebase-trailer.sh
@@ -97,6 +97,33 @@ test_expect_success 'rebase -m --trailer adds trailer after conflicts' '
 	expect_trailer_msg HEAD^ "third"
 '
 
+test_expect_success '--trailer handles fixup commands in todo list' '
+	git checkout -B fixup-trailer HEAD &&
+	test_commit fixup-base base &&
+	test_commit fixup-second second &&
+	first_short=$(git rev-parse --short fixup-base) &&
+	second_short=$(git rev-parse --short fixup-second) &&
+	cat >todo <<EOF &&
+pick $first_short fixup-base
+fixup $second_short fixup-second
+EOF
+	(
+		set_replace_editor todo &&
+		git rebase -i --trailer "$REVIEWED_BY_TRAILER" HEAD~2
+	) &&
+	expect_trailer_msg HEAD "fixup-base" &&
+	git reset --hard fixup-second &&
+	cat >todo <<EOF &&
+pick $first_short fixup-base
+fixup -C $second_short fixup-second
+EOF
+	(
+		set_replace_editor todo &&
+		git rebase -i --trailer "$REVIEWED_BY_TRAILER" HEAD~2
+	) &&
+	expect_trailer_msg HEAD "fixup-second"
+'
+
 test_expect_success 'rebase --root --trailer updates every commit' '
 	git checkout first &&
 	git -c trailer.review.key=Reviewed-by rebase --root \
-- 
2.51.0


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

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-14 12:24 [PATCH v4 00/29] rebase: support --trailer Li Chen
2025-10-14 12:24 ` [PATCH v4 01/29] trailer: append trailers in-process and drop the fork to `interpret-trailers` Li Chen
2025-10-14 20:43   ` Kristoffer Haugsbakk
2025-10-21  9:57     ` Li Chen
2025-10-14 12:24 ` [PATCH v4 02/29] trailer: restore interpret_trailers helper Li Chen
2025-10-14 12:24 ` [PATCH v4 03/29] trailer: drop --trailer prefix handling in amend helper Li Chen
2025-10-14 12:24 ` [PATCH v4 04/29] trailer: move config_head and arg_head to if storage Li Chen
2025-10-14 12:24 ` [PATCH v4 05/29] trailer: use bool for had_trailer_before Li Chen
2025-10-14 12:24 ` [PATCH v4 06/29] interpret-trailers: buffer stdout output Li Chen
2025-10-14 12:24 ` [PATCH v4 07/29] trailer: mirror interpret-trailers output flow Li Chen
2025-10-14 12:24 ` [PATCH v4 08/29] trailer: handle trailer append failures gently Li Chen
2025-10-14 12:24 ` [PATCH v4 09/29] rebase: support --trailer Li Chen
2025-10-14 20:43   ` Kristoffer Haugsbakk
2025-10-22  3:55     ` Li Chen
2025-10-14 12:24 ` [PATCH v4 10/29] rebase: inline trailer state paths Li Chen
2025-10-14 12:24 ` [PATCH v4 11/29] rebase: reuse buffer for trailer args Li Chen
2025-10-14 12:24 ` [PATCH v4 12/29] rebase: drop redundant strbuf_release call Li Chen
2025-10-14 12:24 ` [PATCH v4 13/29] rebase: skip stripping of --trailer option prefix Li Chen
2025-10-14 12:24 ` [PATCH v4 14/29] rebase: die on invalid trailer args Li Chen
2025-10-14 12:24 ` [PATCH v4 15/29] rebase: validate trailers with configured separators Li Chen
2025-10-14 12:24 ` [PATCH v4 16/29] sequencer: add trailers to message before writing file Li Chen
2025-10-14 20:43   ` Kristoffer Haugsbakk
2025-10-14 12:24 ` [PATCH v4 17/29] tests: t3440: create expect files at point of use Li Chen
2025-10-14 20:41   ` Kristoffer Haugsbakk
2025-10-15 13:58     ` Li Chen
2025-10-15 14:02       ` Kristoffer Haugsbakk
2025-10-23  9:04       ` Phillip Wood
2025-10-28 10:26         ` Li Chen
2025-11-03 16:20           ` Phillip Wood
2025-10-14 12:24 ` [PATCH v4 18/29] tests: t3440: check apply backend error includes option Li Chen
2025-10-14 12:24 ` [PATCH v4 19/29] tests: t3440: use test_commit_message for trailer checks Li Chen
2025-10-14 12:24 ` [PATCH v4 20/29] tests: t3440: drop redundant resets and pass branch to rebase where needed Li Chen
2025-10-14 12:24 ` [PATCH v4 21/29] tests: t3440: assert trailer on HEAD after conflict rebase Li Chen
2025-10-14 12:24 ` [PATCH v4 22/29] rebase: persist --trailer options across restarts Li Chen
2025-10-14 12:24 ` [PATCH v4 23/29] tests: t3440: remove redundant --keep-empty Li Chen
2025-10-14 12:24 ` [PATCH v4 24/29] tests: t3440: use helper for trailer checks Li Chen
2025-10-14 12:24 ` [PATCH v4 25/29] tests: t3440: test --trailer without values Li Chen
2025-10-14 13:22   ` Kristoffer Haugsbakk
2025-10-14 12:24 ` [PATCH v4 26/29] tests: t3440: convert ex.com to example.com Li Chen
2025-10-14 12:24 ` [PATCH v4 27/29] tests: t3440: ensure trailers persist after rebase continue Li Chen
2025-10-14 12:24 ` [PATCH v4 28/29] tests: t3440: exercise trailer config mapping Li Chen
2025-10-14 12:24 ` Li Chen [this message]
2025-10-14 12:31 ` [PATCH v4 00/29] rebase: support --trailer 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=20251014122452.1851103-30-me@linux.beauty \
    --to=me@linux.beauty \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox