[PATCH 23 of 23 v2] rebase: move handling of obsolete commits to a separate rebase runtime method
Kostia Balytskyi
ikostia at fb.com
Tue May 31 23:23:43 UTC 2016
# HG changeset patch
# User Kostia Balytskyi <ikostia at fb.com>
# Date 1464616871 -3600
# Mon May 30 15:01:11 2016 +0100
# Node ID 40fb0b98974b45b78f1b673953cba586cefe1e43
# Parent 3258b18e240aaa2b0190144fb2f27d3600b96c05
rebase: move handling of obsolete commits to a separate rebase runtime method
diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -267,6 +267,24 @@
self.external = external
self.activebookmark = activebookmark
+ def _handleskippingobsolete(self, rebaserevs, obsoleterevs, target):
+ """Compute structures necessary for skipping obsolete revisions
+
+ rebaserevs: iterable of all revisions that are to be rebased
+ obsoleterevs: iterable of all obsolete revisions in rebaseset
+ target: a destination revision for the rebase operation
+ """
+ self.obsoletenotrebased = {}
+ if not self.ui.configbool('experimental', 'rebaseskipobsolete',
+ default=True):
+ return
+ rebaseset = set(rebaserevs)
+ obsoleteset = set(obsoleterevs)
+ self.obsoletenotrebased = _computeobsoletenotrebased(self.repo,
+ obsoleteset, target)
+ skippedset = set(self.obsoletenotrebased)
+ _checkobsrebase(self.repo, self.ui, obsoleteset, rebaseset, skippedset)
+
def _prepareabortorcontinue(self):
try:
self.restorestatus()
@@ -286,17 +304,8 @@
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)
+ obsrevs = (r for r, st in self.state.items() if st == revprecursor)
+ self._handleskippingobsolete(self.state.keys(), obsrevs, self.target)
def _preparenewrebase(self):
dest, rebaseset = _definesets(self.ui, self.repo, self.destf, self.srcf,
@@ -314,18 +323,8 @@
" unrebased descendants"),
hint=_('use --keep to keep original changesets'))
- self.obsoletenotrebased = {}
- if self.ui.configbool('experimental', 'rebaseskipobsolete',
- default=True):
- rebasesetrevs = set(rebaseset)
- rebaseobsrevs = _filterobsoleterevs(self.repo, rebasesetrevs)
- self.obsoletenotrebased = _computeobsoletenotrebased(self.repo,
- rebaseobsrevs,
- dest)
- rebaseobsskipped = set(self.obsoletenotrebased)
- _checkobsrebase(self.repo, self.ui, rebaseobsrevs,
- rebasesetrevs,
- rebaseobsskipped)
+ obsrevs = _filterobsoleterevs(self.repo, rebaseset)
+ self._handleskippingobsolete(rebaseset, obsrevs, dest)
result = buildstate(self.repo, dest, rebaseset, self.collapsef,
self.obsoletenotrebased)
More information about the Mercurial-devel
mailing list