# HG changeset patch # User Patrick Mezard # Date 1269373508 -3600 # Node ID 129e96f7a87aecffecc0aca9d32f4a84b609aa51 # Parent 16a13fdb4b36deec482baf796d61f7d67ae7d6f9 rebase: fix --collapse with --keepbranches (issue2100) This was broken in 38fe86fb16e3. diff -r 16a13fdb4b36 -r 129e96f7a87a hgext/rebase.py --- a/hgext/rebase.py Tue Mar 23 20:01:30 2010 +0100 +++ b/hgext/rebase.py Tue Mar 23 20:45:08 2010 +0100 @@ -161,10 +161,7 @@ 'resolve then run hg rebase --continue')) updatedirstate(repo, rev, target, p2) if not collapsef: - extra = {'rebase_source': repo[rev].hex()} - if extrafn: - extrafn(repo[rev], extra) - newrev = concludenode(repo, rev, p1, p2, extra=extra) + newrev = concludenode(repo, rev, p1, p2, extrafn=extrafn) else: # Skip commit if we are collapsing repo.dirstate.setparents(repo[p1].node()) @@ -190,7 +187,7 @@ commitmsg += '\n* %s' % repo[rebased].description() commitmsg = ui.edit(commitmsg, repo.ui.username()) newrev = concludenode(repo, rev, p1, external, commitmsg=commitmsg, - extra=extrafn) + extrafn=extrafn) if 'qtip' in repo.tags(): updatemq(repo, state, skipped, **opts) @@ -266,17 +263,19 @@ if v in m2 and v not in m1: repo.dirstate.remove(v) -def concludenode(repo, rev, p1, p2, commitmsg=None, extra=None): +def concludenode(repo, rev, p1, p2, commitmsg=None, extrafn=None): 'Commit the changes and store useful information in extra' try: repo.dirstate.setparents(repo[p1].node(), repo[p2].node()) if commitmsg is None: commitmsg = repo[rev].description() - if extra is None: - extra = {} + ctx = repo[rev] + extra = {'rebase_source': ctx.hex()} + if extrafn: + extrafn(ctx, extra) # Commit might fail if unresolved files exist - newrev = repo.commit(text=commitmsg, user=repo[rev].user(), - date=repo[rev].date(), extra=extra) + newrev = repo.commit(text=commitmsg, user=ctx.user(), + date=ctx.date(), extra=extra) repo.dirstate.setbranch(repo[newrev].branch()) return newrev except util.Abort: diff -r 16a13fdb4b36 -r 129e96f7a87a tests/test-rebase-collapse --- a/tests/test-rebase-collapse Tue Mar 23 20:01:30 2010 +0100 +++ b/tests/test-rebase-collapse Tue Mar 23 20:45:08 2010 +0100 @@ -43,7 +43,7 @@ hg glog --template '{rev}: {desc}\n' echo '% Rebasing B onto H' hg up -C 3 -hg rebase --collapse 2>&1 | sed 's/\(saving bundle to \).*/\1/' +hg rebase --collapse --keepbranches 2>&1 | sed 's/\(saving bundle to \).*/\1/' hg glog --template '{rev}: {desc}\n' echo "Expected A, B, C, D, F, H" hg manifest