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

[PATCH v3 0/3] breaking-changes: deprecate support for core.commentChar=auto

From
PWPhillip Wood <phillip.wood123@gmail.com>
Date
Aug 26, 2025, 13:35 UTC
Message-ID
<cover.1756215326.git.phillip.wood@dunelm.org.uk>
In-Reply-To
<cover.1751983009.git.phillip.wood@dunelm.org.uk>
From: Phillip Wood <phillip.wood@dunelm.org.uk>

Thanks to Junio and Oswald for their comments on V2. This series implements the plan to deprecate and remove support for core.commentChar=auto outlined in [1]. This feature has been the source of a couple of bug reports recently [2,3] and it is hard to see how the design can be fixed as it is incompatible with preparing a commit message template containing comments. When git sees the deprecated config setting it will print advice based on the user's config setting to help the user either remove the setting or set a custom comment string. In the example below core.commentString is set multiple times in $XDG_CONFIG_HOME/git/config and core.commentChar is set in ~/.gitconfig and $XDG_CONFIG_HOME/git/config.

warning: Support for 'core.commentChar=auto' is deprecated and will be removed in Git 3.0 hint: hint: To use the default comment string (#) please run hint: hint: git config unset --file ~/.config/git/config --all core.commentString hint: git config unset --file ~/.config/git/config core.commentChar hint: git config unset --global core.commentChar hint: hint: To set a custom comment string please run hint: hint: git config set --global core.commentChar <comment string> hint: hint: where '<comment string>' is the string you wish to use.

[1] https://lore.kernel.org/git/6a3154e0-e7bc-45ae-b554-67ccab18727a@gmail.com [2] https://lore.kernel.org/git/20250315140913.577404-1-oswald.buddenhagen@gmx.de [3] https://lore.kernel.org/git/20250626132233.414789-1-ayu.chandekar@gmail.com

Changes since V2:
 - Patch 1: Punctuation fixes
 - Patch 2: Reworded the commit message slightly
            Remove unnecessary include of advice.h
            Fix variable declaration
 - Patch 3: Include advice.h
Changes since V1:
 - Rebased onto a merge of 'ps/config-wo-the-repository' and 'master'
 - Reworded commit messages
 - What was patch 2 has been split into two separate patches and
   reworked to die when core.commentChar=auto and WITH_BREAKING_CHANGES
   is enabled.
Base-Commit: 1ae5bd276bdf101e37c1a8f2904a2eae05fbb744
Published-As: https://github.com/phillipwood/git/releases/tag/pw%2Fremove-auto-comment-char%2Fv3
View-Changes-At: https://github.com/phillipwood/git/compare/1ae5bd276...ee6cf11a8
Fetch-It-Via: git fetch https://github.com/phillipwood/git pw/remove-auto-comment-char/v3
Phillip Wood (3):
  breaking-changes: deprecate support for core.commentString=auto
  config: warn on core.commentString=auto
  commit: print advice when core.commentString=auto
 Documentation/BreakingChanges.adoc |   5 +
 Documentation/config/core.adoc     |  20 +-
 builtin/commit.c                   |   7 +
 builtin/merge.c                    |   3 +
 builtin/rebase.c                   |   3 +
 builtin/revert.c                   |   7 +
 config.c                           | 297 ++++++++++++++++++++++++++++-
 environment.c                      |  11 +-
 environment.h                      |   3 +
 repository.c                       |   1 +
 repository.h                       |   3 +
 t/t3404-rebase-interactive.sh      |  19 +-
 t/t3418-rebase-continue.sh         |   2 +-
 t/t7502-commit-porcelain.sh        |  52 ++++-
 14 files changed, 421 insertions(+), 12 deletions(-)
Range-diff against v2:
1:  a6355451d4b ! 1:  5b921064f1e breaking-changes: deprecate support for core.commentString=auto
    @@ Commit message
         automatically select the comment character ensuring that it is not the
         first character on any of the lines in the commit message. This was
         introduced by commit 84c9dc2c5a2 (commit: allow core.commentChar=auto
    -    for character auto selection, 2014-05-17) The motivation seems to be
    +    for character auto selection, 2014-05-17). The motivation seems to be
         to avoid commenting out lines from the existing message when amending
         a commit that was created with a message from a file.
     
    @@ Commit message
         consequence of the design of this feature and are therefore hard to
         fix.
     
    -    As the costs of this feature outweigh the benefits deprecate it and
    +    As the costs of this feature outweigh the benefits, deprecate it and
         remove it in Git 3.0. If someone comes up with some patches that fix
         all the issues in a maintainable way then I'd be happy to see this
         change reverted.
2:  8b575980426 ! 2:  5dd897c95e6 config: warn on core.commentString=auto
    @@ Commit message
     
         As support for this setting was deprecated in the last commit print a
         warning (or die when WITH_BREAKING_CHANGES is enabled) if it is set.
    -    When printing a warning avoid bombarding the user by only printing it
    -    when running commands commands that run "git commit" and only only
    -    once per command. Some scaffolding is added to repo_read_config()
    -    to allow it to detect deprecated config settings and warn about
    -    them. As both "core.commentChar" and "core.commentString" set the
    -    comment character we record which one of them is used and tailor the
    -    warning message appropriately.
    +    Avoid bombarding the user with warnings by only printing it (a) when
    +    running commands commands that call "git commit" and (b) only once
    +    per command. Some scaffolding is added to repo_read_config() to allow
    +    it to detect deprecated config settings and warn about them. As both
    +    "core.commentChar" and "core.commentString" set the comment character
    +    we record which one of them is used and tailor the warning message
    +    appropriately.
     
         Note the odd combination of die_message() followed by die(NULL)
         is to allow the next commit to insert a call to advise() in the middle.
    @@ builtin/revert.c: struct repository *repo UNUSED)
     
      ## config.c ##
     @@
    - 
    - #include "git-compat-util.h"
    - #include "abspath.h"
    -+#include "advice.h"
      #include "date.h"
      #include "branch.h"
      #include "config.h"
    @@ config.c: int git_configset_get_pathname(struct config_set *set, const char *key
     +
     +#define COMMENT_CHAR_CFG_INIT { 0 }
     +
    -+static const char* comment_key_name(unsigned id)
    ++static const char *comment_key_name(unsigned id)
     +{
     +	static const char *name[] = {
     +		"core.commentChar",
3:  0e7c08b15e5 ! 3:  ee6cf11a82c commit: print advice when core.commentString=auto
    @@ Commit message
         Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
     
      ## config.c ##
    +@@
    + 
    + #include "git-compat-util.h"
    + #include "abspath.h"
    ++#include "advice.h"
    + #include "date.h"
    + #include "branch.h"
    + #include "config.h"
     @@ config.c: int git_configset_get_pathname(struct config_set *set, const char *key, char **d
      struct comment_char_config {
      	unsigned last_key_id;
    @@ config.c: int git_configset_get_pathname(struct config_set *set, const char *key
     +	return (value & COMMENT_KEY_MASK(id)) >> COMMENT_KEY_SHIFT(id);
     +}
      
    - static const char* comment_key_name(unsigned id)
    + static const char *comment_key_name(unsigned id)
      {
    -@@ config.c: static const char* comment_key_name(unsigned id)
    +@@ config.c: static const char *comment_key_name(unsigned id)
      }
      
      static void comment_char_callback(const char *key, const char *value,
-- 
2.49.0.897.gfad3eb7d210
Previous: Junio C HamanoNext: Phillip Wood
Message 35 of 45 in “breaking-changes: deprecate support for core.commentChar=auto”
  1. 0/2 breaking-changes: deprecate support for core.commentChar=autoPhillip Wood, Jul 8, 2025
  2. 1/2 breaking-changes: deprecate support for core.commentString=autoPhillip Wood, Jul 8, 2025
  3. Ayush ChandekarJul 8, 2025
  4. Phillip WoodJul 9, 2025
  5. 2/2 commit: print advice when core.commentString=autoPhillip Wood, Jul 8, 2025
  6. Junio C HamanoJul 8, 2025
  7. Phillip WoodJul 9, 2025
  8. Junio C HamanoJul 9, 2025
  9. Phillip WoodJul 11, 2025
  10. Junio C HamanoJul 11, 2025
  11. Oswald BuddenhagenJul 12, 2025
  12. Junio C HamanoJul 12, 2025
  13. Junio C HamanoJul 26, 2025
  14. Phillip WoodJul 27, 2025
  15. Junio C HamanoJul 9, 2025
  16. Ayush ChandekarJul 9, 2025
  17. Phillip WoodJul 9, 2025
  18. 0/3 breaking-changes: deprecate support for core.commentChar=autoPhillip Wood, Jul 31, 2025
  19. 1/3 breaking-changes: deprecate support for core.commentString=autoPhillip Wood, Jul 31, 2025
  20. Junio C HamanoJul 31, 2025
  21. 2/3 config: warn on core.commentString=autoPhillip Wood, Jul 31, 2025
  22. Junio C HamanoJul 31, 2025
  23. Phillip WoodAug 1, 2025
  24. Oswald BuddenhagenAug 1, 2025
  25. 3/3 commit: print advice when core.commentString=autoPhillip Wood, Jul 31, 2025
  26. Oswald BuddenhagenAug 1, 2025
  27. Junio C HamanoAug 1, 2025
  28. Phillip WoodAug 26, 2025
  29. Oswald BuddenhagenAug 27, 2025
  30. Junio C HamanoAug 27, 2025
  31. Oswald BuddenhagenAug 27, 2025
  32. Junio C HamanoAug 1, 2025
  33. Phillip WoodAug 1, 2025
  34. Junio C HamanoAug 1, 2025
  35. 0/3 breaking-changes: deprecate support for core.commentChar=autoPhillip Wood, Aug 26, 2025
  36. 1/3 breaking-changes: deprecate support for core.commentString=autoPhillip Wood, Aug 26, 2025
  37. 3/3 commit: print advice when core.commentString=autoPhillip Wood, Aug 26, 2025
  38. 2/3 config: warn on core.commentString=autoPhillip Wood, Aug 26, 2025
  39. Junio C HamanoAug 26, 2025
  40. Phillip WoodAug 27, 2025
  41. Junio C HamanoAug 27, 2025
  42. 0/3 breaking-changes: deprecate support for core.commentChar=autoPhillip Wood, Aug 27, 2025
  43. 1/3 breaking-changes: deprecate support for core.commentString=autoPhillip Wood, Aug 27, 2025
  44. 2/3 config: warn on core.commentString=autoPhillip Wood, Aug 27, 2025
  45. 3/3 commit: print advice when core.commentString=autoPhillip Wood, Aug 27, 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.