]> git.ipfire.org Git - thirdparty/git.git/commitdiff
rebase: mark --update-refs as requiring the merge backend
authorElijah Newren <newren@gmail.com>
Wed, 25 Jan 2023 04:03:45 +0000 (04:03 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 25 Jan 2023 17:20:52 +0000 (09:20 -0800)
--update-refs is built in terms of the sequencer, which requires the
merge backend.  It was already marked as incompatible with the apply
backend in the git-rebase manual, but the code didn't check for this
incompatibility and warn the user.  Check and error now.

While at it, fix a typo in t3422...and fix some misleading wording
(most options which used to be am-specific have since been implemented
in the merge backend as well).

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-rebase.txt
builtin/rebase.c
t/t3422-rebase-incompatible-options.sh

index d811c1cf443ef017bda80191d1187f34e7dc6336..6490bc96a15261276bc23490c2da4badf57554d8 100644 (file)
@@ -630,6 +630,8 @@ start would be overridden by the presence of
 +
 If the configuration variable `rebase.updateRefs` is set, then this option
 can be used to override and disable this setting.
++
+See also INCOMPATIBLE OPTIONS below.
 
 INCOMPATIBLE OPTIONS
 --------------------
index a26cc0cfdb5294f9dd4a43c74614e213c15506a2..c111b89e137a3ce41c231caf661d32e7f51f9b8a 100644 (file)
@@ -1492,6 +1492,9 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
                }
        }
 
+       if (options.update_refs)
+               imply_merge(&options, "--update-refs");
+
        if (options.type == REBASE_UNSPECIFIED) {
                if (!strcmp(options.default_backend, "merge"))
                        imply_merge(&options, "--merge");
index 6dabb05a2ad993d0d4d1f41c619f517038f7134f..9da39cd91c2ce2e4fa75971c06190e1e157b699b 100755 (executable)
@@ -25,11 +25,11 @@ test_expect_success 'setup' '
 '
 
 #
-# Rebase has lots of useful options like --whitepsace=fix, which are
-# actually all built in terms of flags to git-am.  Since neither
-# --merge nor --interactive (nor any options that imply those two) use
-# git-am, using them together will result in flags like --whitespace=fix
-# being ignored.  Make sure rebase warns the user and aborts instead.
+# Rebase has a couple options which are specific to the apply backend,
+# and several options which are specific to the merge backend.  Flags
+# from the different sets cannot work together, and we do not want to
+# just ignore one of the sets of flags.  Make sure rebase warns the
+# user and aborts instead.
 #
 
 test_rebase_am_only () {
@@ -60,6 +60,11 @@ test_rebase_am_only () {
                test_must_fail git rebase $opt --exec 'true' A
        "
 
+       test_expect_success "$opt incompatible with --update-refs" "
+               git checkout B^0 &&
+               test_must_fail git rebase $opt --update-refs A
+       "
+
 }
 
 test_rebase_am_only --whitespace=fix