]> git.ipfire.org Git - thirdparty/git.git/commitdiff
rebase: help users when dying with `preserve-merges`
authorPhilip Oakley <philipoakley@iee.email>
Sat, 4 Jun 2022 11:17:47 +0000 (11:17 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 6 Jun 2022 17:45:54 +0000 (10:45 -0700)
Git would die if a "rebase --preserve-merges" was in progress.
Users could neither --quit, --abort, nor --continue the rebase.

Make the `rebase --abort` option available to allow users to remove
traces of any preserve-merges rebase, even if they had upgraded
during a rebase.

One trigger case was an unexpectedly difficult to resolve conflict, as
reported on the `git-users` group.
(https://groups.google.com/g/git-for-windows/c/3jMWbBlXXHM)

Other potential use-cases include git-experts using the portable
'Git on a stick' to help users with an older git version.

Signed-off-by: Philip Oakley <philipoakley@iee.email>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/rebase.c

index 7c1b9bd9b97bb621ddbe3720f056b2970b90256c..a3bae89f64b37640f6bc7a88e477ead30411c9ca 100644 (file)
@@ -1182,8 +1182,10 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
        } else if (is_directory(merge_dir())) {
                strbuf_reset(&buf);
                strbuf_addf(&buf, "%s/rewritten", merge_dir());
-               if (is_directory(buf.buf)) {
-                       die("`rebase -p` is no longer supported");
+               if (!(action == ACTION_ABORT) && is_directory(buf.buf)) {
+                       die("`rebase --preserve-merges` (-p) is no longer supported.\n"
+                       "Use `git rebase --abort` to terminate current rebase.\n"
+                       "Or downgrade to v2.33, or earlier, to complete the rebase.");
                } else {
                        strbuf_reset(&buf);
                        strbuf_addf(&buf, "%s/interactive", merge_dir());