comparison hgext/rebase.py @ 42975:43c84b816445

rebase: track new nodes when --keep is set When --keep is passed with rebase, the new nodes created are not accessible from templates. This change enables accessing the newly-created nodes from nodechanges, just as if --keep was not set. Differential Revision: https://phab.mercurial-scm.org/D6880
author Paul Gossman <pgossman@janestreet.com>
date Wed, 25 Sep 2019 10:59:29 -0400
parents 35ebdbb38efb
children 2372284d9457
comparison
equal deleted inserted replaced
42974:576fd1c8b20b 42975:43c84b816445
1781 for rev, newrev in sorted(state.items()): 1781 for rev, newrev in sorted(state.items()):
1782 if newrev >= 0 and newrev != rev: 1782 if newrev >= 0 and newrev != rev:
1783 oldnode = tonode(rev) 1783 oldnode = tonode(rev)
1784 newnode = collapsedas or tonode(newrev) 1784 newnode = collapsedas or tonode(newrev)
1785 moves[oldnode] = newnode 1785 moves[oldnode] = newnode
1786 if not keepf: 1786 succs = None
1787 succs = None 1787 if rev in skipped:
1788 if rev in skipped: 1788 if stripcleanup or not repo[rev].obsolete():
1789 if stripcleanup or not repo[rev].obsolete(): 1789 succs = ()
1790 succs = () 1790 elif collapsedas:
1791 elif collapsedas: 1791 collapsednodes.append(oldnode)
1792 collapsednodes.append(oldnode) 1792 else:
1793 else: 1793 succs = (newnode,)
1794 succs = (newnode,) 1794 if succs is not None:
1795 if succs is not None: 1795 replacements[(oldnode,)] = succs
1796 replacements[(oldnode,)] = succs
1797 if collapsednodes: 1796 if collapsednodes:
1798 replacements[tuple(collapsednodes)] = (collapsedas,) 1797 replacements[tuple(collapsednodes)] = (collapsedas,)
1799 scmutil.cleanupnodes(repo, replacements, 'rebase', moves, backup=backup)
1800 if fm: 1798 if fm:
1801 hf = fm.hexfunc 1799 hf = fm.hexfunc
1802 fl = fm.formatlist 1800 fl = fm.formatlist
1803 fd = fm.formatdict 1801 fd = fm.formatdict
1804 changes = {} 1802 changes = {}
1805 for oldns, newn in replacements.iteritems(): 1803 for oldns, newn in replacements.iteritems():
1806 for oldn in oldns: 1804 for oldn in oldns:
1807 changes[hf(oldn)] = fl([hf(n) for n in newn], name='node') 1805 changes[hf(oldn)] = fl([hf(n) for n in newn], name='node')
1808 nodechanges = fd(changes, key="oldnode", value="newnodes") 1806 nodechanges = fd(changes, key="oldnode", value="newnodes")
1809 fm.data(nodechanges=nodechanges) 1807 fm.data(nodechanges=nodechanges)
1808 if keepf:
1809 replacements = {}
1810 scmutil.cleanupnodes(repo, replacements, 'rebase', moves, backup=backup)
1810 1811
1811 def pullrebase(orig, ui, repo, *args, **opts): 1812 def pullrebase(orig, ui, repo, *args, **opts):
1812 'Call rebase after pull if the latter has been invoked with --rebase' 1813 'Call rebase after pull if the latter has been invoked with --rebase'
1813 if opts.get(r'rebase'): 1814 if opts.get(r'rebase'):
1814 if ui.configbool('commands', 'rebase.requiredest'): 1815 if ui.configbool('commands', 'rebase.requiredest'):