Mercurial > hg
comparison hgext/rebase.py @ 39915: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 | 94a4980695f8 |
children | a8ccd9523d40 |
comparison
equal
deleted
inserted
replaced
39914:b153ca77a52b | 39915:7198cdbbbde1 |
---|---|
1761 revisions. | 1761 revisions. |
1762 """ | 1762 """ |
1763 tonode = repo.changelog.node | 1763 tonode = repo.changelog.node |
1764 replacements = {} | 1764 replacements = {} |
1765 moves = {} | 1765 moves = {} |
1766 stripcleanup = not obsolete.isenabled(repo, obsolete.createmarkersopt) | |
1766 for rev, newrev in sorted(state.items()): | 1767 for rev, newrev in sorted(state.items()): |
1767 if newrev >= 0 and newrev != rev: | 1768 if newrev >= 0 and newrev != rev: |
1768 oldnode = tonode(rev) | 1769 oldnode = tonode(rev) |
1769 newnode = collapsedas or tonode(newrev) | 1770 newnode = collapsedas or tonode(newrev) |
1770 moves[oldnode] = newnode | 1771 moves[oldnode] = newnode |
1771 if not keepf: | 1772 if not keepf: |
1773 succs = None | |
1772 if rev in skipped: | 1774 if rev in skipped: |
1773 succs = () | 1775 if stripcleanup or not repo[rev].obsolete(): |
1776 succs = () | |
1774 else: | 1777 else: |
1775 succs = (newnode,) | 1778 succs = (newnode,) |
1776 replacements[oldnode] = succs | 1779 if succs is not None: |
1780 replacements[oldnode] = succs | |
1777 scmutil.cleanupnodes(repo, replacements, 'rebase', moves, backup=backup) | 1781 scmutil.cleanupnodes(repo, replacements, 'rebase', moves, backup=backup) |
1778 if fm: | 1782 if fm: |
1779 hf = fm.hexfunc | 1783 hf = fm.hexfunc |
1780 fl = fm.formatlist | 1784 fl = fm.formatlist |
1781 fd = fm.formatdict | 1785 fd = fm.formatdict |