diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -361,11 +361,9 @@ ( self.obsoletenotrebased, self.obsoletewithoutsuccessorindestination, - obsoleteextinctsuccessors, ) = _computeobsoletenotrebased(self.repo, obsoleteset, destmap) skippedset = set(self.obsoletenotrebased) skippedset.update(self.obsoletewithoutsuccessorindestination) - skippedset.update(obsoleteextinctsuccessors) _checkobsrebase(self.repo, self.ui, obsoleteset, skippedset) def _prepareabortorcontinue( @@ -2192,13 +2190,9 @@ `obsoletewithoutsuccessorindestination` is a set with obsolete revisions without a successor in destination. - - `obsoleteextinctsuccessors` is a set of obsolete revisions with only - obsolete successors. """ obsoletenotrebased = {} obsoletewithoutsuccessorindestination = set() - obsoleteextinctsuccessors = set() assert repo.filtername is None cl = repo.changelog @@ -2212,11 +2206,8 @@ successors.remove(srcnode) succrevs = {get_rev(s) for s in successors} succrevs.discard(None) - if succrevs.issubset(extinctrevs): - # all successors are extinct - obsoleteextinctsuccessors.add(srcrev) - if not successors: - # no successor + if not successors or succrevs.issubset(extinctrevs): + # no successor, or all successors are extinct obsoletenotrebased[srcrev] = None else: dstrev = destmap[srcrev] @@ -2231,11 +2222,7 @@ if srcrev in extinctrevs or any(s in destmap for s in succrevs): obsoletewithoutsuccessorindestination.add(srcrev) - return ( - obsoletenotrebased, - obsoletewithoutsuccessorindestination, - obsoleteextinctsuccessors, - ) + return obsoletenotrebased, obsoletewithoutsuccessorindestination def abortrebase(ui, repo): diff --git a/tests/test-rebase-obsolete.t b/tests/test-rebase-obsolete.t --- a/tests/test-rebase-obsolete.t +++ b/tests/test-rebase-obsolete.t @@ -1294,18 +1294,16 @@ o 0:b173517d0057 a $ hg rebase -d 0 -r 2 - rebasing 2:a82ac2b38757 c "c" + note: not rebasing 2:a82ac2b38757 c "c", it has no successor $ hg log -G -r 'a': --hidden - o 5:69ad416a4a26 c + * 4:76be324c128b d | - | * 4:76be324c128b d + | x 3:ef8a456de8fa c1 (pruned) | | - | | x 3:ef8a456de8fa c1 (pruned) - | | | - | x | 2:a82ac2b38757 c (rewritten using replace as 3:ef8a456de8fa rewritten using rebase as 5:69ad416a4a26) - | |/ - | o 1:488e1b7e7341 b + x | 2:a82ac2b38757 c (rewritten using replace as 3:ef8a456de8fa) |/ + o 1:488e1b7e7341 b + | o 0:b173517d0057 a $ cd ..