From: Phillip Wood <phillip.wood123@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Ayush Chandekar <ayu.chandekar@gmail.com>,
christian.couder@gmail.com, git@vger.kernel.org,
shyamthakkar001@gmail.com, kristofferhaugsbakk@fastmail.com
Subject: Re: [GSOC PATCH v2] commit: avoid scanning trailing comments when 'core.commentChar' is "auto"
Date: Sat, 28 Jun 2025 14:38:01 +0100 [thread overview]
Message-ID: <f39a3285-574a-45c6-9646-04eb175f4770@gmail.com> (raw)
In-Reply-To: <xmqqms9t8cfd.fsf@gitster.g>
On 27/06/2025 15:52, Junio C Hamano wrote:
> Phillip Wood <phillip.wood123@gmail.com> writes:
>
>>> + size_t cutoff;
>>> +
>>> + /* Ignore comment chars in trailing comments (e.g., Conflicts:) */
>>> + cutoff = sb->len - ignored_log_message_bytes(sb->buf, sb->len);
>>
>> This finds the "Conflicts:" line. I was surprised to see that the
>> string it looks for is hard coded and not translated, however the
>> sequencer (also surprisingly) does not translate that message either
>> so it should work.
>
> There is a funny chicken-and-egg problem, though. It limits the
> search for "Conflicts" by using wt_status_locate_end() based on the
> current value of comment_line_str. When core.commentstring is set
> to "auto", the code that reads the configuration does not touch the
> comment_line_str variable, which is initialized to '#'. So
>
> [core]
> commentstring = '%'
> commentstring = auto
>
> would have '%' in comment_line_str upon entering this codepath, let
> wt_status_locate_end() use '%' as the comment string to find the end
> of the log message, and then looks for "Conflicts:" in the result.
>
> Which may or may not be what you want.
Oh, good point - I'd not looked at the config parsing. So we'd create
conflict comments that look like
% Conflicts:
% some-file.c
but so long as the commit message did not contain a '#' character [1]
"git commit" would select '#' as the automatic comment char and our
conflicts lines would not be treated as a comment.
Should we be resetting comment_line_str to '#' when core.commentString
is set to "auto"? That wont help if the commit message contains a '#'
but at least it would be consistently broken.
We could move adjust_comment_line_char() into libgit.a, use that to
select the comment character used in append_conflicts_hint() and set
core.commentString to that character when we run "git commit". I think
doing that would mean that appending conflict comments would always work
with core.commentString=auto but it is a more complex solution as we
would need to remember the comment character and then pass it to git
commit once the user had fixed the conflicts.
One final note - although the commit message mentions a change to "git
rebase" I think this problem already affected cherry-pick, revert and
merge before that change. In practice I suspect it is only cherry-pick
where one is likely to see this problem because the template messages
for the other two commands are unlikely to contain a '#'.
Thanks
Phillip
[1] For some reason adjust_comment_line_char() will not select '#' as
the comment char if it occurs anywhere in the message but the other
candidates are selected so long as they are not the first character on
any line.
next prev parent reply other threads:[~2025-06-28 13:38 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-26 13:22 [GSOC PATCH] commit: avoid scanning trailing comments when 'core.commentChar' is "auto" Ayush Chandekar
2025-06-26 14:33 ` Junio C Hamano
2025-06-26 21:30 ` Ayush Chandekar
2025-06-26 15:40 ` Kristoffer Haugsbakk
2025-06-26 21:28 ` Ayush Chandekar
2025-06-26 22:16 ` [GSOC PATCH v2] " Ayush Chandekar
2025-06-27 8:34 ` Phillip Wood
2025-06-27 14:52 ` Junio C Hamano
2025-06-28 10:37 ` Ayush Chandekar
2025-06-28 13:38 ` Phillip Wood [this message]
2025-06-28 14:33 ` Ayush Chandekar
2025-06-30 8:59 ` Phillip Wood
2025-06-30 17:34 ` Ayush Chandekar
2025-06-28 15:10 ` Phillip Wood
2025-06-30 14:11 ` Junio C Hamano
2025-06-28 10:18 ` Ayush Chandekar
2025-06-27 9:04 ` Christian Couder
2025-06-30 18:25 ` [GSOC PATCH v3] " Ayush Chandekar
2025-07-01 13:17 ` Phillip Wood
2025-07-01 18:33 ` Ayush Chandekar
2025-07-01 19:31 ` Phillip Wood
2025-07-02 23:46 ` Ayush Chandekar
2025-07-04 8:23 ` Phillip Wood
2025-07-08 15:47 ` Ayush Chandekar
2025-07-09 14:17 ` Phillip Wood
2025-07-15 18:51 ` [GSOC PATCH 0/2] commit: improve behaviour of core.commentChar=auto for comments in commit messages Ayush Chandekar
2025-07-15 18:51 ` [GSOC PATCH 1/2] commit: avoid scanning trailing comments when 'core.commentChar' is "auto" Ayush Chandekar
2025-07-15 18:57 ` [GSOC PATCH v4 " Ayush Chandekar
2025-07-15 18:51 ` [GSOC PATCH 2/2] config: set comment_line_str to "#" when core.commentChar=auto Ayush Chandekar
2025-07-15 18:57 ` [GSOC PATCH v4 " Ayush Chandekar
2025-07-15 21:23 ` [GSOC PATCH " Junio C Hamano
2025-07-15 22:15 ` Ayush Chandekar
2025-07-15 23:30 ` Junio C Hamano
2025-07-16 11:04 ` Ayush Chandekar
2025-07-16 15:21 ` Junio C Hamano
2025-07-16 15:24 ` Phillip Wood
2025-07-16 15:29 ` Junio C Hamano
2025-07-15 18:56 ` [GSOC PATCH v4 0/2] commit: improve behaviour of core.commentChar=auto for comments in commit messages Ayush Chandekar
2025-07-16 11:43 ` [GSOC PATCH v5 " Ayush Chandekar
2025-07-16 11:43 ` [GSOC PATCH v5 1/2] commit: avoid scanning trailing comments when 'core.commentChar' is "auto" Ayush Chandekar
2025-07-16 11:43 ` [GSOC PATCH v5 2/2] config: set comment_line_str to "#" when core.commentChar=auto Ayush Chandekar
2025-07-16 15:28 ` Junio C Hamano
2025-07-16 14:28 ` [GSOC PATCH v5 0/2] commit: improve behaviour of core.commentChar=auto for comments in commit messages Phillip Wood
2025-07-16 15:29 ` Junio C Hamano
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=f39a3285-574a-45c6-9646-04eb175f4770@gmail.com \
--to=phillip.wood123@gmail.com \
--cc=ayu.chandekar@gmail.com \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=kristofferhaugsbakk@fastmail.com \
--cc=phillip.wood@dunelm.org.uk \
--cc=shyamthakkar001@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).