merge: fix a copy detection bug (issue672)
When merging rev1 and rev2, we want to search for copies that happened
in rev1 but not in rev2 and vice-versa. We were starting the search at
rev1/rev2 and then going back, stopping as soon as we reached the revno
of the ancestor, but that can miss some cases (see the new
test-issue672).
Now we calculate the revisions that are ancestors of rev1 or rev2 (but
not both) and make sure the search doesn't stop too early.
Simplified test provided by mpm, based on a test case provided by
Edward Lee.
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
pulling from ../test1
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
(run 'hg update' to get a working copy)
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
% the changelog should mention file a:
a
pulling from ../test2
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 0 changes to 0 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
changeset: 2:37dccb76c058
tag: tip
parent: 0:4536b1c2ca69
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: chmod +x a
changeset: 1:a187cb361a5a
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: a updated
changeset: 2:37dccb76c058
tag: tip
parent: 0:4536b1c2ca69
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: chmod +x a
changeset: 1:a187cb361a5a
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: a updated
changeset: 0:4536b1c2ca69
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: added a b
resolving manifests
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
pulling from ../test2
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 0 changes to 0 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
changeset: 2:37dccb76c058
tag: tip
parent: 0:4536b1c2ca69
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: chmod +x a
changeset: 1:d54568174d8e
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: b updated
changeset: 2:37dccb76c058
tag: tip
parent: 0:4536b1c2ca69
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: chmod +x a
changeset: 1:d54568174d8e
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: b updated
changeset: 0:4536b1c2ca69
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: added a b
resolving manifests
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
-rwxr-x---
-rwxr-x---
-rwxr-x---
rev offset length base linkrev nodeid p1 p2
0 0 0 0 0 b80de5d13875 000000000000 000000000000
rev offset length base linkrev nodeid p1 p2
0 0 0 0 0 b80de5d13875 000000000000 000000000000
rev offset length base linkrev nodeid p1 p2
0 0 0 0 0 b80de5d13875 000000000000 000000000000
1 0 5 1 1 7fe919cc0336 b80de5d13875 000000000000