]> git.ipfire.org Git - thirdparty/git.git/commit
rebase: fully ignore rebase.autoSquash without -i
authorAndy Koppe <andy.koppe@gmail.com>
Tue, 14 Nov 2023 21:43:37 +0000 (21:43 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 16 Nov 2023 00:18:21 +0000 (09:18 +0900)
commit75cf39b1178f5e6c2830bf3e81521828bb0171ff
tree0cce1b14cfa8822822e23cadaea0479f0a4d3cd2
parente0939bec273052b1a8d69db4a3f7c87aaf83e220
rebase: fully ignore rebase.autoSquash without -i

Setting the rebase.autoSquash config variable to true implies a couple
of restrictions: it prevents preemptive fast-forwarding and it triggers
conflicts with apply backend options. However, it only actually results
in auto-squashing when combined with the --interactive (or -i) option,
due to code in run_specific_rebase() that disables auto-squashing unless
the REBASE_INTERACTIVE_EXPLICIT flag is set.

Doing autosquashing for rebase.autoSquash without --interactive would be
problematic in terms of backward compatibility, but conversely, there is
no need for the aforementioned restrictions without --interactive.

So drop the options.config_autosquash check from the conditions for
clearing allow_preemptive_ff, as the case where it is combined with
--interactive is already covered by the REBASE_INTERACTIVE_EXPLICIT
flag check above it.

Also drop the "apply options are incompatible with rebase.autoSquash"
error, because it is unreachable if it is restricted to --interactive,
as apply options already cause an error when used with --interactive.
Drop the tests for the error from t3422-rebase-incompatible-options.sh,
which has separate tests for the conflicts of --interactive with apply
options.

When neither --autosquash nor --no-autosquash are given, only set
options.autosquash to true if rebase.autosquash is combined with
--interactive.

Don't initialize options.config_autosquash to -1, as there is no need to
distinguish between rebase.autoSquash being unset or explicitly set to
false.

Finally, amend the rebase.autoSquash documentation to say it only
affects interactive mode.

Signed-off-by: Andy Koppe <andy.koppe@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config/rebase.txt
builtin/rebase.c
t/t3422-rebase-incompatible-options.sh