git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [GSOC PATCH] commit: avoid scanning trailing comments when 'core.commentChar' is "auto"

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 26, 2025, 14:33 UTC
Message-ID
<xmqq5xgir2ry.fsf@gitster.g>
In-Reply-To
<20250626132233.414789-1-ayu.chandekar@gmail.com>
Ayush Chandekar <ayu.chandekar@gmail.com> writes:
Show 20 quoted lines
> 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.
Show 24 quoted lines
> 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.
Previous: Ayush ChandekarNext: Ayush Chandekar
Message 2 of 41 in “commit: avoid scanning trailing comments when 'core.commentChar' is "auto"”
  1. commit: avoid scanning trailing comments when 'core.commentChar' is "auto"Ayush Chandekar, Jun 26, 2025
  2. Junio C HamanoJun 26, 2025
  3. Ayush ChandekarJun 26, 2025
  4. Kristoffer HaugsbakkJun 26, 2025
  5. Ayush ChandekarJun 26, 2025
  6. commit: avoid scanning trailing comments when 'core.commentChar' is "auto"Ayush Chandekar, Jun 26, 2025
  7. Phillip WoodJun 27, 2025
  8. Junio C HamanoJun 27, 2025
  9. Ayush ChandekarJun 28, 2025
  10. Phillip WoodJun 28, 2025
  11. Ayush ChandekarJun 28, 2025
  12. Phillip WoodJun 30, 2025
  13. Ayush ChandekarJun 30, 2025
  14. Phillip WoodJun 28, 2025
  15. Junio C HamanoJun 30, 2025
  16. Ayush ChandekarJun 28, 2025
  17. Christian CouderJun 27, 2025
  18. commit: avoid scanning trailing comments when 'core.commentChar' is "auto"Ayush Chandekar, Jun 30, 2025
  19. Phillip WoodJul 1, 2025
  20. Ayush ChandekarJul 1, 2025
  21. Phillip WoodJul 1, 2025
  22. Ayush ChandekarJul 2, 2025
  23. Phillip WoodJul 4, 2025
  24. Ayush ChandekarJul 8, 2025
  25. Phillip WoodJul 9, 2025
  26. 0/2 commit: improve behaviour of core.commentChar=auto for comments in commit messagesAyush Chandekar, Jul 15, 2025
  27. 1/2 commit: avoid scanning trailing comments when 'core.commentChar' is "auto"Ayush Chandekar, Jul 15, 2025
  28. 2/2 config: set comment_line_str to "#" when core.commentChar=autoAyush Chandekar, Jul 15, 2025
  29. Junio C HamanoJul 15, 2025
  30. Ayush ChandekarJul 15, 2025
  31. Junio C HamanoJul 15, 2025
  32. Ayush ChandekarJul 16, 2025
  33. Junio C HamanoJul 16, 2025
  34. Phillip WoodJul 16, 2025
  35. Junio C HamanoJul 16, 2025
  36. 0/2 commit: improve behaviour of core.commentChar=auto for comments in commit messagesAyush Chandekar, Jul 16, 2025
  37. 1/2 commit: avoid scanning trailing comments when 'core.commentChar' is "auto"Ayush Chandekar, Jul 16, 2025
  38. 2/2 config: set comment_line_str to "#" when core.commentChar=autoAyush Chandekar, Jul 16, 2025
  39. Junio C HamanoJul 16, 2025
  40. Phillip WoodJul 16, 2025
  41. Junio C HamanoJul 16, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.