merge: do early copy to deal with issue636
Without copies/renames, merges source names are 1:1 with their
targets. Copies and renames introduce the possibility that there will
be two merges with the same input but different output. By doing the
copy to the destination name before the merge, the actual merge
becomes 1:1 again, and no source is the input to two different merges.
- add a preliminary scan to applyupdates to do copies
- for the merge action, pass the old name (for finding ancestors) and
the new name (for input to the merge) to filemerge
- eliminate the old post-merge copy
- lookup file contents from new name in filemerge
- pass new name to external merge helper
- report merge failure at new name
- add a test
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
pulling from ../test-a
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
warning: conflicts during merge.
merging test.txt
merging test.txt failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
There are unresolved merges, you can redo the full merge using:
hg update -C 1
hg merge 2
pulling from ../test-a
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
warning: conflicts during merge.
resolving manifests
overwrite None partial False
ancestor faaea63e63a9 local 451c744aabcc+ remote a070d41e8360
test.txt: versions differ -> m
merging test.txt
my test.txt@451c744aabcc+ other test.txt@a070d41e8360 ancestor test.txt@faaea63e63a9
merging test.txt failed!
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
There are unresolved merges, you can redo the full merge using:
hg update -C 3
hg merge 4
one
<<<<<<< my
two-point-five
=======
two-point-one
>>>>>>> other
three
rev offset length base linkrev nodeid p1 p2
0 0 7 0 0 01365c4cca56 000000000000 000000000000
1 7 9 1 1 7b013192566a 01365c4cca56 000000000000
2 16 15 2 2 8fe46a3eb557 01365c4cca56 000000000000
3 31 27 2 3 fc3148072371 7b013192566a 8fe46a3eb557
4 58 25 4 4 d40249267ae3 8fe46a3eb557 000000000000
changeset: 4:a070d41e8360
tag: tip
parent: 2:faaea63e63a9
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: two -> two-point-one
changeset: 3:451c744aabcc
parent: 1:e409be6afcc0
parent: 2:faaea63e63a9
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: Merge 1
changeset: 2:faaea63e63a9
parent: 0:095c92b91f1a
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: Numbers as words
changeset: 1:e409be6afcc0
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 2 -> 2.5
changeset: 0:095c92b91f1a
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: Initial