diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -1888,11 +1888,10 @@ obsoletenotrebased[srcrev] = succrev break else: - # If 'srcrev' has a successor in rebase set but none in - # destination (which would be catched above), we shall skip it - # and its descendants to avoid divergence. - if srcrev in extinctrevs or any(s in destmap for s in succrevs): - obsoletewithoutsuccessorindestination.add(srcrev) + # If 'srcrev' has no successor in destination (which would be + # caught above), we shall skip it and its descendants to + # avoid divergence. + obsoletewithoutsuccessorindestination.add(srcrev) return ( obsoletenotrebased, 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 @@ -943,9 +943,7 @@ phases: 8 draft orphan: 1 changesets $ hg rebase -s 10 -d 12 - abort: this rebase will cause divergences from: 121d9e3bc4c6 - (to force the rebase please set experimental.evolution.allowdivergence=True) - [255] + note: not rebasing 10:121d9e3bc4c6 "P" and its descendants as this would cause divergence $ hg log -G @ 14:73568ab6879d bar foo | @@ -1146,14 +1144,13 @@ By allowing divergence, we can perform the rebase. $ hg rebase -r 'c'::'f' -d 'x' - abort: this rebase will cause divergences from: 76be324c128b - (to force the rebase please set experimental.evolution.allowdivergence=True) - [255] + rebasing 3:a82ac2b38757 "c" (c) + note: not rebasing 4:76be324c128b "d" (d) and its descendants as this would cause divergence + 2 new orphan changesets $ hg rebase --config experimental.evolution.allowdivergence=true -r 'c'::'f' -d 'x' rebasing 3:a82ac2b38757 "c" (c) rebasing 4:76be324c128b "d" (d) - rebasing 7:1143e9adc121 "f" (f tip) - 1 new orphan changesets + rebasing 7:1143e9adc121 "f" (f) 2 new content-divergent changesets $ hg log -G -r 'a':: -T instabilities o 10:e1744ea07510 f @@ -1289,18 +1286,16 @@ o 0:b173517d0057 a $ hg rebase -d 0 -r 2 - rebasing 2:a82ac2b38757 "c" (c) + note: not rebasing 2:a82ac2b38757 "c" (c) and its descendants as this would cause divergence $ 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 .. @@ -1559,9 +1554,7 @@ 1 new orphan changesets $ hg rebase -b 'desc("D")' -d 'desc("J")' - abort: this rebase will cause divergences from: 112478962961 - (to force the rebase please set experimental.evolution.allowdivergence=True) - [255] + note: not rebasing 2:112478962961 "B" (B) and its descendants as this would cause divergence Rebase merge where both parents have successors in destination