D2913: rebase: store rebase state after each commit

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Wed Mar 21 19:34:58 EDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rHG98663bed146e: rebase: store rebase state after each commit (authored by martinvonz, committed by ).

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D2913?vs=7176&id=7205

REVISION DETAIL
  https://phab.mercurial-scm.org/D2913

AFFECTED FILES
  hgext/rebase.py
  tests/test-rebase-collapse.t
  tests/test-rebase-conflicts.t

CHANGE DETAILS

diff --git a/tests/test-rebase-conflicts.t b/tests/test-rebase-conflicts.t
--- a/tests/test-rebase-conflicts.t
+++ b/tests/test-rebase-conflicts.t
@@ -239,7 +239,6 @@
   rebase status stored
   rebasing 9:e31216eec445 "more changes to f1"
    future parents are 2 and -1
-  rebase status stored
    update to 2:4bc80088dc6b
   resolving manifests
    branchmerge: False, force: True, partial: False
@@ -264,9 +263,9 @@
   committing changelog
   updating the branch cache
   rebased as 19c888675e13
+  rebase status stored
   rebasing 10:2f2496ddf49d "merge" (tip)
    future parents are 11 and 7
-  rebase status stored
    already in destination
    merge against 10:2f2496ddf49d
      detach base 9:e31216eec445
@@ -284,6 +283,7 @@
   committing changelog
   updating the branch cache
   rebased as 2a7f09cac94c
+  rebase status stored
   rebase merging completed
   update back to initial working directory parent
   resolving manifests
diff --git a/tests/test-rebase-collapse.t b/tests/test-rebase-collapse.t
--- a/tests/test-rebase-collapse.t
+++ b/tests/test-rebase-collapse.t
@@ -813,19 +813,7 @@
   |/
   o  0: 4a2df7238c3b 'A'
   
-BROKEN: should not result in a conflict
   $ hg rebase --continue
   already rebased 1:f899f3910ce7 "B" (B) as 82b8abf9c185
-  rebasing 3:63668d570d21 "C" (C tip)
-  merging A
-  warning: conflicts while merging A! (edit, then use 'hg resolve --mark')
-  unresolved conflicts (see hg resolve, then hg rebase --continue)
-  [1]
-  $ cat A
-  <<<<<<< dest:   82b8abf9c185 D - test: D
-  BD
-  ||||||| base
-  B
-  =======
-  C
-  >>>>>>> source: 63668d570d21 C tip - test: C
+  already rebased 3:63668d570d21 "C" (C tip) as 82b8abf9c185
+  saved backup bundle to $TESTTMP/aborted-editor/.hg/strip-backup/f899f3910ce7-7cab5e15-rebase.hg
diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -484,8 +484,6 @@
             p1, p2, base = defineparents(repo, rev, self.destmap,
                                          self.state, self.skipped,
                                          self.obsoletenotrebased)
-            if not tr:
-                self.storestatus()
             if len(repo[None].parents()) == 2:
                 repo.ui.debug('resuming interrupted rebase\n')
             else:
@@ -546,6 +544,12 @@
         else:
             ui.status(_('already rebased %s as %s\n') %
                       (desc, repo[self.state[rev]]))
+        if not tr:
+            # When not using single transaction, store state after each
+            # commit is completely done. On InterventionRequired, we thus
+            # won't store the status. Instead, we'll hit the "len(parents) == 2"
+            # case and realize that the commit was in progress.
+            self.storestatus()
 
     def _finishrebase(self):
         repo, ui, opts = self.repo, self.ui, self.opts



To: martinvonz, phillco, #hg-reviewers, indygreg
Cc: mercurial-devel


More information about the Mercurial-devel mailing list