git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: kristofferhaugsbakk@fastmail.com
To: git@vger.kernel.org
Cc: Kristoffer Haugsbakk <code@khaugsbakk.name>,
	stolee@gmail.com, phillip.wood123@gmail.com, me@ttaylorr.com
Subject: [PATCH v3 2/3] sequencer: comment `--reference` subject line properly
Date: Sun, 24 Nov 2024 21:56:11 +0100	[thread overview]
Message-ID: <7a452142666e5ffd2f69f79532781284b5bba8fa.1732481200.git.code@khaugsbakk.name> (raw)
In-Reply-To: <cover.1732481200.git.code@khaugsbakk.name>

From: Kristoffer Haugsbakk <code@khaugsbakk.name>

`git revert --reference <commit>` leaves behind a comment in the
first line:[1]

    # *** SAY WHY WE ARE REVERTING ON THE TITLE LINE ***

Meaning that the commit will just consist of the next line if the user
exits the editor directly:

    This reverts commit <--format=reference commit>

But the comment char here is hardcoded (#).  Which means that the
comment line will inadvertently be included in the commit message if
`core.commentChar`/`core.commentString` is in use.

† 1: See 43966ab3156 (revert: optionally refer to commit in the
    "reference" format, 2022-05-26)

Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
---

Notes (series):
    v3:
    • Review feedback: check more in the test by inspecting the
      proposed commit message.
    
      Link: https://lore.kernel.org/git/4c623fcf-01dd-4056-80c1-b3c860ab7f87@gmail.com/
    • Message:
      • Rewrite message now that we are testing something different
      • consistency with the other two messages (see previous)
    v2:
    • `strbuf_commented_addf` adds a newline, unlike the previous function.
       We need to remove a newline from the final `strbuf_addstr` with `This
       reverts commits` and add a newline to each of the other
       branches (`else if` and `else`).

 sequencer.c                   |  9 +++++----
 t/t3501-revert-cherry-pick.sh | 14 ++++++++++++++
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/sequencer.c b/sequencer.c
index 1b6fd86f70b..d26299cdea2 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -2341,8 +2341,8 @@ static int do_pick_commit(struct repository *r,
 		next = parent;
 		next_label = msg.parent_label;
 		if (opts->commit_use_reference) {
-			strbuf_addstr(&ctx->message,
-				"# *** SAY WHY WE ARE REVERTING ON THE TITLE LINE ***");
+			strbuf_commented_addf(&ctx->message, comment_line_str,
+				"*** SAY WHY WE ARE REVERTING ON THE TITLE LINE ***");
 		} else if (skip_prefix(msg.subject, "Revert \"", &orig_subject) &&
 			   /*
 			    * We don't touch pre-existing repeated reverts, because
@@ -2352,12 +2352,13 @@ static int do_pick_commit(struct repository *r,
 			   !starts_with(orig_subject, "Revert \"")) {
 			strbuf_addstr(&ctx->message, "Reapply \"");
 			strbuf_addstr(&ctx->message, orig_subject);
+			strbuf_addstr(&ctx->message, "\n");
 		} else {
 			strbuf_addstr(&ctx->message, "Revert \"");
 			strbuf_addstr(&ctx->message, msg.subject);
-			strbuf_addstr(&ctx->message, "\"");
+			strbuf_addstr(&ctx->message, "\"\n");
 		}
-		strbuf_addstr(&ctx->message, "\n\nThis reverts commit ");
+		strbuf_addstr(&ctx->message, "\nThis reverts commit ");
 		refer_to_commit(opts, &ctx->message, commit);
 
 		if (commit->parents && commit->parents->next) {
diff --git a/t/t3501-revert-cherry-pick.sh b/t/t3501-revert-cherry-pick.sh
index 411027fb58c..43476236131 100755
--- a/t/t3501-revert-cherry-pick.sh
+++ b/t/t3501-revert-cherry-pick.sh
@@ -228,6 +228,20 @@ test_expect_success 'identification of reverted commit (--reference)' '
 	test_cmp expect actual
 '
 
+test_expect_success 'git revert --reference with core.commentChar' '
+	test_when_finished "git reset --hard to-ident" &&
+	git checkout --detach to-ident &&
+	GIT_EDITOR="cat | head -4 >actual" git -c core.commentChar=% revert \
+		--edit --reference HEAD &&
+	cat <<-EOF >expect &&
+	% *** SAY WHY WE ARE REVERTING ON THE TITLE LINE ***
+
+	This reverts commit $(git show -s --pretty=reference HEAD^).
+
+	EOF
+	test_cmp expect actual
+'
+
 test_expect_success 'identification of reverted commit (revert.reference)' '
 	git checkout --detach to-ident &&
 	git -c revert.reference=true revert --no-edit HEAD &&
-- 
2.47.0


  parent reply	other threads:[~2024-11-24 20:56 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-23 17:27 [PATCH] sequencer: comment checked-out branch properly kristofferhaugsbakk
2024-10-23 18:44 ` Taylor Blau
2024-10-23 19:53   ` Kristoffer Haugsbakk
2024-10-31 16:30     ` Phillip Wood
2024-10-31 17:25       ` Kristoffer Haugsbakk
2024-10-31 20:30         ` phillip.wood123
2024-10-31  9:58   ` Phillip Wood
2024-10-31 10:07     ` Kristoffer Haugsbakk
2024-10-31 16:30       ` Phillip Wood
2024-10-23 20:43 ` Taylor Blau
2024-10-23 20:51   ` Kristoffer Haugsbakk
2024-11-12 10:20 ` [PATCH v2 0/3] sequencer: comment out properly in todo list kristofferhaugsbakk
2024-11-12 10:20   ` [PATCH v2 1/3] sequencer: comment checked-out branch properly kristofferhaugsbakk
2024-11-13  1:07     ` Junio C Hamano
2024-11-13  1:18       ` Junio C Hamano
2024-11-13 14:47       ` phillip.wood123
2024-11-13 22:57         ` Junio C Hamano
2024-11-24 20:02         ` Kristoffer Haugsbakk
2024-11-12 10:20   ` [PATCH v2 2/3] sequencer: comment `--reference` subject line properly kristofferhaugsbakk
2024-11-13  1:07     ` Junio C Hamano
2024-11-13 14:48       ` phillip.wood123
2024-11-13 23:00         ` Junio C Hamano
2024-11-12 10:20   ` [PATCH v2 3/3] sequencer: comment commit messages properly kristofferhaugsbakk
2024-11-13  1:03     ` Junio C Hamano
2024-11-13 14:49       ` phillip.wood123
2024-11-24 19:58         ` Kristoffer Haugsbakk
2024-11-13  0:26   ` [PATCH v2 0/3] sequencer: comment out properly in todo list Junio C Hamano
2024-11-24 20:01     ` Kristoffer Haugsbakk
2024-11-24 20:56   ` [PATCH v3 " kristofferhaugsbakk
2024-11-24 20:56     ` [PATCH v3 1/3] sequencer: comment checked-out branch properly kristofferhaugsbakk
2024-11-24 20:56     ` kristofferhaugsbakk [this message]
2024-11-24 20:56     ` [PATCH v3 3/3] sequencer: comment commit messages properly kristofferhaugsbakk
2024-11-25 10:07     ` [PATCH v3 0/3] sequencer: comment out properly in todo list phillip.wood123
2024-11-25 10:52       ` Kristoffer Haugsbakk
2024-11-25 14:36         ` phillip.wood123
2024-11-25 20:13     ` [PATCH v4 " kristofferhaugsbakk
2024-11-25 20:13       ` [PATCH v4 1/3] sequencer: comment checked-out branch properly kristofferhaugsbakk
2024-11-25 20:13       ` [PATCH v4 2/3] sequencer: comment `--reference` subject line properly kristofferhaugsbakk
2024-11-25 20:13       ` [PATCH v4 3/3] sequencer: comment commit messages properly kristofferhaugsbakk
2024-11-26  1:11       ` [PATCH v4 0/3] sequencer: comment out properly in todo list Junio C Hamano
2024-11-26 11:24         ` Phillip Wood
2024-11-27 12:39           ` Kristoffer Haugsbakk

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=7a452142666e5ffd2f69f79532781284b5bba8fa.1732481200.git.code@khaugsbakk.name \
    --to=kristofferhaugsbakk@fastmail.com \
    --cc=code@khaugsbakk.name \
    --cc=git@vger.kernel.org \
    --cc=me@ttaylorr.com \
    --cc=phillip.wood123@gmail.com \
    --cc=stolee@gmail.com \
    /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;
as well as URLs for NNTP newsgroup(s).