# HG changeset patch # User Boris Feld # Date 2018-09-26 20:05:28 # Node ID 7198cdbbbde194d1d32a3de888151e0a939a581e # Parent b153ca77a52baaf5a663f646dc06af91116177a4 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. diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -1763,17 +1763,21 @@ def clearrebased(ui, repo, destmap, stat 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