From: Junio C Hamano <gitster@pobox.com>
To: Ayush Chandekar <ayu.chandekar@gmail.com>
Cc: git@vger.kernel.org, christian.couder@gmail.com,
shyamthakkar001@gmail.com, phillip.wood123@gmail.com
Subject: Re: [GSOC PATCH] commit: avoid scanning trailing comments when 'core.commentChar' is "auto"
Date: Thu, 26 Jun 2025 07:33:21 -0700 [thread overview]
Message-ID: <xmqq5xgir2ry.fsf@gitster.g> (raw)
In-Reply-To: <20250626132233.414789-1-ayu.chandekar@gmail.com> (Ayush Chandekar's message of "Thu, 26 Jun 2025 18:52:33 +0530")
Ayush Chandekar <ayu.chandekar@gmail.com> writes:
> When core.commentChar is set to "auto", Git selects a comment character
> by scanning the commit message contents and avoiding any character
> already present in the message.
>
> If the message still contains old conflict comments (starting with a
> comment character), Git assumes that character is in use and chooses a
> different one. As a result, those existing comment lines are no longer
> recognized as comments and end up being included in the final commit
> message.
>
> To avoid this, skip scanning the trailing comment block when selecting
> the comment character. This allows Git to safely reuse the original
> character when appropriate, keeping the commit message clean and free of
> leftover conflict information.
>
> Background:
>
> The "auto" value for core.commentchar was introduced in the commit
> `84c9dc2` (commit: allow core.commentChar=auto for character auto
> selection) but did not exhibt this issue at that time.
Use "git log -1 --format=reference", i.e.
84c9dc2c (commit: allow core.commentChar=auto for character auto
selection, 2014-05-17)
> The bug was introduced in commit `a6c2654` (rebase -m: fix --signoff
> with conflicts) where Git started writing conflict comments to the file
> at 'rebase_path_message()'.
Ditto.
> diff --git a/builtin/commit.c b/builtin/commit.c
> index fba0dded64..63e7158e98 100644
> --- a/builtin/commit.c
> +++ b/builtin/commit.c
> @@ -688,6 +688,10 @@ static void adjust_comment_line_char(const struct strbuf *sb)
> char candidates[] = "#;@!$%^&|:";
> char *candidate;
> const char *p;
> + size_t cutoff;
> +
> + /* Ignore comment chars in trailing comments (e.g., Conflicts:) */
> + cutoff = sb->len - ignored_log_message_bytes(sb->buf, sb->len);
>
> if (!memchr(sb->buf, candidates[0], sb->len)) {
> free(comment_line_str_to_free);
> @@ -700,7 +704,7 @@ static void adjust_comment_line_char(const struct strbuf *sb)
> candidate = strchr(candidates, *p);
> if (candidate)
> *candidate = ' ';
> - for (p = sb->buf; *p; p++) {
> + for (p = sb->buf; p + 1 < sb->buf + cutoff; p++) {
> if ((p[0] == '\n' || p[0] == '\r') && p[1]) {
> candidate = strchr(candidates, p[1]);
> if (candidate)
Looks quite straight-forward. Nice.
Thanks.
next prev parent reply other threads:[~2025-06-26 14:33 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 [this message]
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
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:56 ` [GSOC PATCH v4 " 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-16 11:43 ` [GSOC PATCH v5 0/2] commit: improve behaviour of core.commentChar=auto for comments in commit messages 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=xmqq5xgir2ry.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=ayu.chandekar@gmail.com \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=phillip.wood123@gmail.com \
--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 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.