[PATCH 16 of 23 v2] rebase: move abort and continue preparation to be a method of runtime cls
Kostia Balytskyi
ikostia at fb.com
Tue May 31 19:23:36 EDT 2016
# HG changeset patch
# User Kostia Balytskyi <ikostia at fb.com>
# Date 1464602609 -3600
# Mon May 30 11:03:29 2016 +0100
# Node ID a19540cc9a2e90b8b37fe206b22a50cd4ae99e03
# Parent 2c57aff9bd8801a6857c6ddd9b5aa21ab3c7088c
rebase: move abort and continue preparation to be a method of runtime cls
diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -265,6 +265,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')),
@@ -384,36 +415,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