git/builtin
Phillip Wood fdae4114a6 breaking-changes: deprecate support for core.commentString=auto
When "core.commentString" is set to "auto" then "git commit" will
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 84c9dc2c5a (commit: allow core.commentChar=auto
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.

Unfortunately this feature does not work with:

 * commit message templates that contain comments.

 * prepare-commit-msg hooks that introduce comments.

 * "git commit --cleanup=strip --edit -F <file>" which means that it
   is incompatible with

   - the "fixup" and "squash" commands of "git rebase -i" as the
     comments added by those commands are then treated as part of
     the commit message.

   - the conflict comments added to the commit message by "git
     cherry-pick", "git rebase" etc. as these comments are then
     treated as part of the commit message.

It is also ignored by "git notes" when amending a note.

The issues with comments coming from a template, hook or file are a
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
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.

The next commits will add a warning and some advice for users on how
they can update their config settings.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2025-08-26 08:47:37 -07:00
..
add.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
am.c config: drop `git_config_get_bool()` wrapper 2025-07-23 08:15:20 -07:00
annotate.c
apply.c builtin: use default hash when outside a repository 2025-07-01 14:58:24 -07:00
archive.c
backfill.c odb: rename `has_object()` 2025-07-01 14:46:38 -07:00
bisect.c
blame.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
branch.c config: drop `git_config_set_multivar()` wrapper 2025-07-23 08:15:21 -07:00
bugreport.c object-file: move `safe_create_leading_directories()` into "path.c" 2025-04-15 08:24:35 -07:00
bundle.c
cat-file.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
check-attr.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
check-ignore.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
check-mailmap.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
check-ref-format.c
checkout--worker.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
checkout-index.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
checkout.c config: drop `git_config_get_bool()` wrapper 2025-07-23 08:15:20 -07:00
clean.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
clone.c config: drop `git_config_set_multivar()` wrapper 2025-07-23 08:15:21 -07:00
column.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
commit-graph.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
commit-tree.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
commit.c breaking-changes: deprecate support for core.commentString=auto 2025-08-26 08:47:37 -07:00
config.c config: drop `git_config_set_multivar_in_file_gently()` wrapper 2025-07-23 08:15:21 -07:00
count-objects.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
credential-cache--daemon.c config: drop `git_config_get_bool()` wrapper 2025-07-23 08:15:20 -07:00
credential-cache.c
credential-store.c config: drop `git_config_get_int()` wrapper 2025-07-23 08:15:20 -07:00
credential.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
describe.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
diagnose.c object-file: move `safe_create_leading_directories()` into "path.c" 2025-04-15 08:24:35 -07:00
diff-files.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
diff-index.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
diff-pairs.c
diff-tree.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
diff.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
difftool.c odb: rename `repo_read_object_file()` 2025-07-01 14:46:38 -07:00
fast-export.c Merge branch 'ps/config-wo-the-repository' into pw/3.0-commentchar-auto-deprecation 2025-07-31 12:28:51 -07:00
fast-import.c Merge branch 'ps/config-wo-the-repository' into pw/3.0-commentchar-auto-deprecation 2025-07-31 12:28:51 -07:00
fetch-pack.c builtin/fetch-pack: cleanup before return error 2025-06-04 08:52:25 -07:00
fetch.c config: drop `git_config_get_int()` wrapper 2025-07-23 08:15:20 -07:00
fmt-merge-msg.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
for-each-ref.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
for-each-repo.c
fsck.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
fsmonitor--daemon.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
gc.c config: drop `git_config_set_multivar_in_file_gently()` wrapper 2025-07-23 08:15:21 -07:00
get-tar-commit-id.c
grep.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
hash-object.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
help.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
hook.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
index-pack.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
init-db.c Merge branch 'ps/parse-options-integers' 2025-04-24 17:25:34 -07:00
interpret-trailers.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
log.c config: drop `git_config_get_string()` wrapper 2025-07-23 08:15:19 -07:00
ls-files.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
ls-remote.c builtin: use default hash when outside a repository 2025-07-01 14:58:24 -07:00
ls-tree.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
mailinfo.c
mailsplit.c
merge-base.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
merge-file.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
merge-index.c
merge-ours.c
merge-recursive.c builtin/merge-recursive: switch to using merge_ort_generic() 2025-04-08 13:59:11 -07:00
merge-tree.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
merge.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
mktag.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
mktree.c odb: rename `oid_object_info()` 2025-07-01 14:46:37 -07:00
multi-pack-index.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
mv.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
name-rev.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
notes.c config: drop `git_config_get_string()` wrapper 2025-07-23 08:15:19 -07:00
pack-objects.c Merge branch 'ps/config-wo-the-repository' into pw/3.0-commentchar-auto-deprecation 2025-07-31 12:28:51 -07:00
pack-redundant.c Merge branch 'ps/object-store' 2025-07-15 15:18:18 -07:00
pack-refs.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
patch-id.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
prune-packed.c
prune.c Merge branch 'ps/object-store' 2025-07-15 15:18:18 -07:00
pull.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
push.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
range-diff.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
read-tree.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
rebase.c config: drop `git_config_get_bool()` wrapper 2025-07-23 08:15:20 -07:00
receive-pack.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
reflog.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
refs.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
remote-ext.c
remote-fd.c
remote.c Merge branch 'ps/config-wo-the-repository' into pw/3.0-commentchar-auto-deprecation 2025-07-31 12:28:51 -07:00
repack.c Merge branch 'ps/config-wo-the-repository' into pw/3.0-commentchar-auto-deprecation 2025-07-31 12:28:51 -07:00
replace.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
replay.c repo_logmsg_reencode: fix memory leak when use repo_logmsg_reencode () 2025-06-05 08:35:22 -07:00
rerere.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
reset.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
rev-list.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
rev-parse.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
revert.c Merge branch 'ps/parse-options-integers' 2025-04-24 17:25:34 -07:00
rm.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
send-pack.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
shortlog.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
show-branch.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
show-index.c builtin: use default hash when outside a repository 2025-07-01 14:58:24 -07:00
show-ref.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
sparse-checkout.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
stash.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
stripspace.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
submodule--helper.c config: drop `git_config_set_in_file_gently()` wrapper 2025-07-23 08:15:21 -07:00
symbolic-ref.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
tag.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
unpack-file.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
unpack-objects.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
update-index.c config: drop `git_config()` wrapper 2025-07-23 08:15:18 -07:00
update-ref.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
update-server-info.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
upload-archive.c
upload-pack.c
var.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
verify-commit.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
verify-pack.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
verify-tag.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00
worktree.c config: drop `git_config_set_multivar_in_file_gently()` wrapper 2025-07-23 08:15:21 -07:00
write-tree.c config: move Git config parsing into "environment.c" 2025-07-23 08:15:22 -07:00