# HG changeset patch # User Matt Mackall # Date 1434145270 18000 # Node ID 67950fcf1c69014160e9b234dfe79815d9dee6bb # Parent 8db7828751b7d1ceee73f5d8606a9fbf5d29547f rebase: teach rebase how to copy topics diff -r 8db7828751b7 -r 67950fcf1c69 src/topic/__init__.py --- a/src/topic/__init__.py Fri Jun 12 16:39:39 2015 -0500 +++ b/src/topic/__init__.py Fri Jun 12 16:41:10 2015 -0500 @@ -163,6 +163,24 @@ finally: wlock.release() +def _fixrebase(loaded): + if not loaded: + return + + def savetopic(ctx, extra): + e = ctx.extra() + if constants.extrakey in e: + print "copying topic" + extra[constants.extrakey] = e[constants.extrakey] + + def newmakeextrafn(orig, copiers): + return orig(copiers + [savetopic]) + + rebase = extensions.find("rebase") + extensions.wrapfunction(rebase, '_makeextrafn', newmakeextrafn) + +extensions.afterloaded('rebase', _fixrebase) + entry = extensions.wrapcommand(commands.table, 'commit', commitwrap) entry[1].append(('t', 'topic', '', _("use specified topic"), _('TOPIC')))