Mercurial > public > mercurial-scm > hg-stable
diff hgext/rebase.py @ 26360:b2415e94b2f5
rebase: avoid losing branch commits with --keepbranch (issue4835)
author | timeless@mozdev.org |
---|---|
date | Thu, 24 Sep 2015 17:51:05 -0400 |
parents | 92409f8dff5d |
children | 4b0fc75f9403 |
line wrap: on
line diff
--- a/hgext/rebase.py Thu Sep 24 16:03:26 2015 -0700 +++ b/hgext/rebase.py Thu Sep 24 17:51:05 2015 -0400 @@ -431,7 +431,8 @@ editform = cmdutil.mergeeditform(merging, 'rebase') editor = cmdutil.getcommiteditor(editform=editform, **opts) newnode = concludenode(repo, rev, p1, p2, extrafn=extrafn, - editor=editor) + editor=editor, + keepbranches=keepbranchesf) else: # Skip commit if we are collapsing repo.dirstate.beginparentchange() @@ -481,7 +482,8 @@ editopt = True editor = cmdutil.getcommiteditor(edit=editopt, editform=editform) newnode = concludenode(repo, rev, p1, external, commitmsg=commitmsg, - extrafn=extrafn, editor=editor) + extrafn=extrafn, editor=editor, + keepbranches=keepbranchesf) if newnode is None: newrev = target else: @@ -561,7 +563,8 @@ (max(targetancestors), ', '.join(str(p) for p in sorted(parents)))) -def concludenode(repo, rev, p1, p2, commitmsg=None, editor=None, extrafn=None): +def concludenode(repo, rev, p1, p2, commitmsg=None, editor=None, extrafn=None, + keepbranches=False): '''Commit the wd changes with parents p1 and p2. Reuse commit info from rev but also store useful information in extra. Return node of committed revision.''' @@ -571,6 +574,7 @@ ctx = repo[rev] if commitmsg is None: commitmsg = ctx.description() + keepbranch = keepbranches and repo[p1].branch() != ctx.branch() extra = {'rebase_source': ctx.hex()} if extrafn: extrafn(ctx, extra) @@ -579,6 +583,8 @@ try: targetphase = max(ctx.phase(), phases.draft) repo.ui.setconfig('phases', 'new-commit', targetphase, 'rebase') + if keepbranch: + repo.ui.setconfig('ui', 'allowemptycommit', True) # Commit might fail if unresolved files exist newnode = repo.commit(text=commitmsg, user=ctx.user(), date=ctx.date(), extra=extra, editor=editor)