From: "Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com>
To: "Taylor Blau" <me@ttaylorr.com>,
"Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com>
Cc: git@vger.kernel.org, "Derrick Stolee" <stolee@gmail.com>
Subject: Re: [PATCH] sequencer: comment checked-out branch properly
Date: Wed, 23 Oct 2024 21:53:18 +0200 [thread overview]
Message-ID: <20cca28c-cc0f-4bfa-bc1c-6a3dd6bc25a8@app.fastmail.com> (raw)
In-Reply-To: <ZxlEJ+44M8z03VOj@nand.local>
On Wed, Oct 23, 2024, at 20:44, Taylor Blau wrote:
> Nice find. My first thought when reading was that this was a
> regression from 8b311478ad (config: allow multi-byte core.commentChar,
> 2024-03-12). But thinking about it for a moment that is definitely
> not true, as this has probably never worked since core.commentChar was
> introduced, and has nothing to do with what range of value(s) it does
> or doesn't support.
Yeah, `%` turns out to be sufficient to reproduce (even though I use a
multi-byte one myself, and when I found this).
>> […]
>> --- a/sequencer.c
>> +++ b/sequencer.c
>> @@ -6382,8 +6382,9 @@ static int add_decorations_to_list(const struct commit *commit,
>> /* If the branch is checked out, then leave a comment instead. */
>> if ((path = branch_checked_out(decoration->name))) {
>> item->command = TODO_COMMENT;
>> - strbuf_addf(ctx->buf, "# Ref %s checked out at '%s'\n",
>> - decoration->name, path);
>> + strbuf_commented_addf(ctx->buf, comment_line_str,
>> + "Ref %s checked out at '%s'\n",
>> + decoration->name, path);
>
> Makes sense, but the following command turns up a couple more results
> even after applying:
>
> $ git grep -p 'strbuf_addf([^,]*, "#'
> sequencer.c=static void update_squash_message_for_fixup(struct strbuf *msg)
> sequencer.c: strbuf_addf(&buf1, "# %s\n", _(first_commit_msg_str));
> sequencer.c: strbuf_addf(&buf2, "# %s\n", _(skip_first_commit_msg_str));
>
> I imagine that we would want similar treatment there as well, no?
Here is where I got confused. I tried to make this test appended to
`t/t3437-rebase-fixup-options.sh` yesterday in order to exercise this
code:
```
test_expect_success 'sequence of fixup, fixup -C & squash --signoff works (but with commentChar)' '
git checkout --detach B3 &&
FAKE_LINES="1 fixup 2 fixup_-C 3 fixup_-C 4 squash 5 fixup_-C 6" \
FAKE_COMMIT_AMEND=squashed \
FAKE_MESSAGE_COPY=actual-squash-message \
git -c core.commentChar=% -c commit.status=false rebase -ik --signoff A &&
git diff-tree --exit-code --patch HEAD B3 -- &&
echo actual: &&
cat actual-squash-message
'
```
And the output looked correct, i.e. all-`%`.[1]
I didn’t understand that. Maybe I exercised the wrong code. But that’s
the point where I dropped that lead yesterday. Figured that there was
some downstream string magic that I was unaware of.
(I could just change those two and see if any tests blow up)
However there is this one in `sequencer.c`:
```
if (opts->commit_use_reference) {
strbuf_addstr(&ctx->message,
"# *** SAY WHY WE ARE REVERTING ON THE TITLE LINE ***");
```
And that line is supposed to be a comment line according to the commit
(43966ab3156 (revert: optionally refer to commit in the "reference"
format, 2022-05-26)). But it does just output hardcoded `#` if you
change comment char. I’ll add that to the series.
>> […]
>> +test_expect_success 'git rebase --update-ref with core.commentChar and branch on worktree' '
>> + test_when_finished git branch -D base topic2 &&
>> + test_when_finished git checkout main &&
>> + test_when_finished git branch -D wt-topic &&
>> + test_when_finished git worktree remove wt-topic &&
>> + git checkout main &&
>> + git checkout -b base &&
>> + git checkout -b topic2 &&
>> + test_commit msg2 &&
>> + git worktree add wt-topic &&
>> + git checkout base &&
>> + test_commit msg3 &&
>> + git checkout topic2 &&
>> + git -c core.commentChar=% rebase --update-refs base
>> +'
>> +
>
> Seems quite reasonable.
In hindsight and with some `cat todo` it seems that the setup isn’t
minimal. I stumbled upon this by accident while not using worktrees.
And the todo editor seems to comment out two lines, not just one.
Maybe detached `HEAD` would be more lean.
† 1:
```
% This is a combination of 6 commits.
% This is the 1st commit message:
B
Signed-off-by: Rebase Committer <rebase.committer@example.com>
% The commit message #2 will be skipped:
% fixup! B
% This is the commit message #3:
% amend! B
B
edited 1
Signed-off-by: Rebase Committer <rebase.committer@example.com>
% This is the commit message #4:
% amend! amend! B
B
edited 1
edited 2
Signed-off-by: Rebase Committer <rebase.committer@example.com>
% This is the commit message #5:
% squash! amend! amend! B
edited squash
% This is the commit message #6:
% amend! amend! amend! B
B
edited 1
edited 2
edited 3
squashed
ok 13 - sequence of fixup, fixup -C & squash --signoff works (but with commentChar)
```
next prev parent reply other threads:[~2024-10-23 19:53 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 [this message]
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 ` [PATCH v3 2/3] sequencer: comment `--reference` subject line properly kristofferhaugsbakk
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=20cca28c-cc0f-4bfa-bc1c-6a3dd6bc25a8@app.fastmail.com \
--to=kristofferhaugsbakk@fastmail.com \
--cc=git@vger.kernel.org \
--cc=me@ttaylorr.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).