changeset 39920:7198cdbbbde1

rebase: don't try to prune obsolete changeset already in the destination With similar motivations to the previous changesets, we stop marking changeset from pruning when it is not the command intention. In this case, we still need to distinguish between the strip and the obsolete case.
author Boris Feld <boris.feld@octobus.net>
date Wed, 26 Sep 2018 22:05:28 +0200
parents b153ca77a52b
children 1857f50a9643
files hgext/rebase.py
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/rebase.py	Wed Sep 26 21:51:29 2018 +0200
+++ b/hgext/rebase.py	Wed Sep 26 22:05:28 2018 +0200
@@ -1763,17 +1763,21 @@
     tonode = repo.changelog.node
     replacements = {}
     moves = {}
+    stripcleanup = not obsolete.isenabled(repo, obsolete.createmarkersopt)
     for rev, newrev in sorted(state.items()):
         if newrev >= 0 and newrev != rev:
             oldnode = tonode(rev)
             newnode = collapsedas or tonode(newrev)
             moves[oldnode] = newnode
             if not keepf:
+                succs = None
                 if rev in skipped:
-                    succs = ()
+                    if stripcleanup or not repo[rev].obsolete():
+                        succs = ()
                 else:
                     succs = (newnode,)
-                replacements[oldnode] = succs
+                if succs is not None:
+                    replacements[oldnode] = succs
     scmutil.cleanupnodes(repo, replacements, 'rebase', moves, backup=backup)
     if fm:
         hf = fm.hexfunc