[PATCH 15 of 16] rebase: move abort and continue preparation to be a rebase runtime obj method

Kostia Balytskyi ikostia at fb.com
Sun May 29 18:38:46 EDT 2016


# HG changeset patch
# User Kostia Balytskyi <ikostia at fb.com>
# Date 1464556674 -3600
#      Sun May 29 22:17:54 2016 +0100
# Node ID 53d5ffc14360e0feb3d86bf5596b9fb5c6520bab
# Parent  d1d265c63070dccdc17c10885fb8b3833c29cdef
rebase: move abort and continue preparation to be a rebase runtime obj method

diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -267,6 +267,37 @@
         self.external = external
         self.activebookmark = activebookmark
 
+    def _prepareabortorcontinue(self):
+        try:
+            self.restorestatus()
+            self.collapsemsg = restorecollapsemsg(self.repo)
+        except error.RepoLookupError:
+            if self.abortf:
+                clearstatus(self.repo)
+                clearcollapsemsg(self.repo)
+                self.repo.ui.warn(_('rebase aborted (no revision is removed,'
+                                    ' only broken state is cleared)\n'))
+                return 0
+            else:
+                msg = _('cannot continue inconsistent rebase')
+                hint = _('use "hg rebase --abort" to clear broken state')
+                raise error.Abort(msg, hint=hint)
+        if self.abortf:
+            return abort(self.repo, self.originalwd, self.target,
+                         self.state, activebookmark=self.activebookmark)
+
+        self.obsoletenotrebased = {}
+        if self.ui.configbool('experimental', 'rebaseskipobsolete',
+                              default=True):
+            rebaseobsrevs = set([r for r, st in self.state.items()
+                                    if st == revprecursor])
+            rebasesetrevs = set(self.state.keys())
+            self.obsoletenotrebased = _computeobsoletenotrebased(self.repo,
+                                            rebaseobsrevs, self.target)
+            rebaseobsskipped = set(self.obsoletenotrebased)
+            _checkobsrebase(self.repo, self.ui, rebaseobsrevs, rebasesetrevs,
+                            rebaseobsskipped)
+
 @command('rebase',
     [('s', 'source', '',
      _('rebase the specified changeset and descendants'), _('REV')),
@@ -386,36 +417,9 @@
         lock = repo.lock()
 
         if rtstate.contf or rtstate.abortf:
-            try:
-                rtstate.restorestatus()
-                rtstate.collapsemsg = restorecollapsemsg(repo)
-            except error.RepoLookupError:
-                if rtstate.abortf:
-                    clearstatus(repo)
-                    clearcollapsemsg(repo)
-                    repo.ui.warn(_('rebase aborted (no revision is removed,'
-                                   ' only broken state is cleared)\n'))
-                    return 0
-                else:
-                    msg = _('cannot continue inconsistent rebase')
-                    hint = _('use "hg rebase --abort" to clear broken state')
-                    raise error.Abort(msg, hint=hint)
-            if rtstate.abortf:
-                return abort(repo, rtstate.originalwd, rtstate.target,
-                             rtstate.state,
-                             activebookmark=rtstate.activebookmark)
-
-            rtstate.obsoletenotrebased = {}
-            if ui.configbool('experimental', 'rebaseskipobsolete',
-                             default=True):
-                rebaseobsrevs = set([r for r, st in rtstate.state.items()
-                                     if st == revprecursor])
-                rebasesetrevs = set(rtstate.state.keys())
-                rtstate.obsoletenotrebased = _computeobsoletenotrebased(repo,
-                                                rebaseobsrevs, rtstate.target)
-                rebaseobsskipped = set(rtstate.obsoletenotrebased)
-                _checkobsrebase(repo, ui, rebaseobsrevs, rebasesetrevs,
-                                rebaseobsskipped)
+            retcode = rtstate._prepareabortorcontinue()
+            if retcode is not None:
+                return retcode
         else:
             dest, rebaseset = _definesets(ui, repo, rtstate.destf, rtstate.srcf,
                                           rtstate.basef, rtstate.revf,


More information about the Mercurial-devel mailing list