Mercurial > hg
changeset 4410:bbc97d419b16
Add fast-forward branch merging
author | Brendan Cully <brendan@kublai.com> |
---|---|
date | Sun, 06 May 2007 20:27:45 -0700 |
parents | 28b7d949ef6a |
children | 681b681f7f09 |
files | mercurial/merge.py tests/test-newbranch tests/test-newbranch.out |
diffstat | 3 files changed, 34 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/merge.py Mon May 07 00:12:35 2007 +0200 +++ b/mercurial/merge.py Sun May 06 20:27:45 2007 -0700 @@ -489,14 +489,19 @@ p1, p2 = pl[0], repo.changectx(node) pa = p1.ancestor(p2) fp1, fp2, xp1, xp2 = p1.node(), p2.node(), str(p1), str(p2) + fastforward = False ### check phase if not overwrite and len(pl) > 1: raise util.Abort(_("outstanding uncommitted merges")) if pa == p1 or pa == p2: # is there a linear path from p1 to p2? if branchmerge: - raise util.Abort(_("there is nothing to merge, just use " - "'hg update' or look at 'hg heads'")) + if p1.branch() != p2.branch(): + fastforward = True + branchmerge = False + else: + raise util.Abort(_("there is nothing to merge, just use " + "'hg update' or look at 'hg heads'")) elif not (overwrite or branchmerge): raise util.Abort(_("update spans branches, use 'hg merge' " "or 'hg update -C' to lose changes")) @@ -525,7 +530,7 @@ if not partial: recordupdates(repo, action, branchmerge) repo.dirstate.setparents(fp1, fp2) - if not branchmerge: + if not branchmerge and not fastforward: repo.dirstate.setbranch(p2.branch()) repo.hook('update', parent1=xp1, parent2=xp2, error=stats[3])
--- a/tests/test-newbranch Mon May 07 00:12:35 2007 +0200 +++ b/tests/test-newbranch Sun May 06 20:27:45 2007 -0700 @@ -51,4 +51,15 @@ hg branch foobar hg up +echo % fastforward merge +hg branch ff +echo ff > ff +hg ci -Am'fast forward' -d '1000000 0' +hg up foo +hg merge ff +hg branch +hg commit -m'Merge ff into foo' -d '1000000 0' +hg parents +hg manifest + exit 0
--- a/tests/test-newbranch.out Mon May 07 00:12:35 2007 +0200 +++ b/tests/test-newbranch.out Sun May 06 20:27:45 2007 -0700 @@ -84,3 +84,18 @@ bf1bc2f45e83 4909a3732169 (foo) tip abort: branch foobar not found +% fastforward merge +adding ff +0 files updated, 0 files merged, 1 files removed, 0 files unresolved +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +(branch merge, don't forget to commit) +foo +changeset: 6:9cc105113eeb +branch: foo +tag: tip +user: test +date: Mon Jan 12 13:46:40 1970 +0000 +summary: Merge ff into foo + +a +ff