Patchwork D7826: rebase: stop relying on having two parents to resume rebase

login
register
mail settings
Submitter phabricator
Date Jan. 11, 2020, 6:47 a.m.
Message ID <differential-rev-PHID-DREV-m4sv6g5vpxgrp3shz4r6-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/44251/
State Superseded
Headers show

Comments

phabricator - Jan. 11, 2020, 6:47 a.m.
martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  I'm about to make it so we don't have two parents when a rebase is
  interrupted (unless we're just rebasing on a merge commit). The code
  for detecting if we're resuming a rebase relied on having two parents,
  so this patch rewrites that to instead set a boolean when we resume.
  
  Note that `self.resume` in the new condition implies `not
  self.inmemory` (rebase cannot be resumed in memory), so that's why
  that part can be omitted.

REPOSITORY
  rHG Mercurial

BRANCH
  default

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

AFFECTED FILES
  hgext/rebase.py

CHANGE DETAILS




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

Patch

diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -177,6 +177,7 @@ 
         # --continue or --abort)), the original repo should be used so
         # visibility-dependent revsets are correct.
         self.prepared = False
+        self.resume = False
         self._repo = repo
 
         self.ui = ui
@@ -366,6 +367,7 @@ 
         _checkobsrebase(self.repo, self.ui, obsoleteset, skippedset)
 
     def _prepareabortorcontinue(self, isabort, backup=True, suppwarns=False):
+        self.resume = True
         try:
             self.restorestatus()
             self.collapsemsg = restorecollapsemsg(self.repo, isabort)
@@ -605,8 +607,9 @@ 
                 self.skipped,
                 self.obsoletenotrebased,
             )
-            if not self.inmemory and len(repo[None].parents()) == 2:
+            if self.resume and self.wctx.p1().rev() == p1:
                 repo.ui.debug(b'resuming interrupted rebase\n')
+                self.resume = False
             else:
                 overrides = {(b'ui', b'forcemerge'): opts.get(b'tool', b'')}
                 with ui.configoverride(overrides, b'rebase'):