chiark / gitweb /
git-debrebase: scrap works properly when it does only rebase --abort
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 11 Aug 2018 20:59:53 +0000 (21:59 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 12 Aug 2018 00:41:46 +0000 (01:41 +0100)
We use @deferred_updates to see if we actually did anything for
--noop-ok purposes.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
debian/changelog
git-debrebase

index cfc7b5c918ec43fd76f17aa6ba8ab68a2fa18e20..28b4811de3feabc60a3117c6bc3e753e6a1ed8b9 100644 (file)
@@ -4,6 +4,7 @@ dgit (6.7~) unstable; urgency=medium
   * git-debrebase: Better (less copious by default) debug output.
   * git-debrebase: Do not bail making patches if there aren't any.
   * test suite: Set DEBFULLNAME
+  * git-debrebase: scrap works properly when it does only rebase --abort.
 
  --
 
index a4cafb64db92b993a0819029b848785d006f8e96..09e0907d0b4bb6a4d12435e9a053175ceccd1ecd 100755 (executable)
@@ -2204,19 +2204,28 @@ sub cmd_conclude () {
 sub cmd_scrap () {
     if (currently_rebasing()) {
        runcmd @git, qw(rebase --abort);
+       push @deferred_updates, 'verify HEAD HEAD';
+       # noop, but stops us complaining that scrap was a noop
     }
+    badusage "no arguments allowed" if @ARGV;
     my ($ffq_prev, $gdrlast, $ffq_prev_commitish) = ffq_prev_info();
-    if (!$ffq_prev_commitish) {
+    my $scrapping_head;
+    if ($ffq_prev_commitish) {
+       $scrapping_head = get_head();
+       push @deferred_updates,
+           "update $gdrlast $ffq_prev_commitish $git_null_obj",
+           "update $ffq_prev $git_null_obj $ffq_prev_commitish";
+    }
+    if (!@deferred_updates) {
        fail "No ongoing git-debrebase session." unless $opt_noop_ok;
        finish 0;
     }
-    my $scrapping_head = get_head();
-    badusage "no arguments allowed" if @ARGV;
-    push @deferred_updates,
-       "update $gdrlast $ffq_prev_commitish $git_null_obj",
-       "update $ffq_prev $git_null_obj $ffq_prev_commitish";
     snags_maybe_bail();
-    update_head_checkout $scrapping_head, $ffq_prev_commitish, "scrap";
+    if ($scrapping_head) {
+       update_head_checkout $scrapping_head, $ffq_prev_commitish, "scrap";
+    } else {
+       run_deferred_updates "scrap";
+    }
 }
 
 sub make_patches_staged ($) {