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.
% init
% committing changes
adding a
% committed changeset 0
% committed changeset 1
% committed changeset 2
% committed changeset 3
% committed changeset 4
% committed changeset 5
% committed changeset 6
% committed changeset 7
% committed changeset 8
% committed changeset 9
% committed changeset 10
% committed changeset 11
% committed changeset 12
% committed changeset 13
% committed changeset 14
% committed changeset 15
% committed changeset 16
% committed changeset 17
% committed changeset 18
% committed changeset 19
% committed changeset 20
% committed changeset 21
% committed changeset 22
% committed changeset 23
% committed changeset 24
% committed changeset 25
% committed changeset 26
% committed changeset 27
% committed changeset 28
% committed changeset 29
% committed changeset 30
% committed changeset 31
% log
changeset: 31:58c80a7c8a40
tag: tip
user: test
date: Thu Jan 01 00:00:31 1970 +0000
summary: msg 31
changeset: 30:ed2d2f24b11c
user: test
date: Thu Jan 01 00:00:30 1970 +0000
summary: msg 30
changeset: 29:b5bd63375ab9
user: test
date: Thu Jan 01 00:00:29 1970 +0000
summary: msg 29
changeset: 28:8e0c2264c8af
user: test
date: Thu Jan 01 00:00:28 1970 +0000
summary: msg 28
changeset: 27:288867a866e9
user: test
date: Thu Jan 01 00:00:27 1970 +0000
summary: msg 27
changeset: 26:3efc6fd51aeb
user: test
date: Thu Jan 01 00:00:26 1970 +0000
summary: msg 26
changeset: 25:02a84173a97a
user: test
date: Thu Jan 01 00:00:25 1970 +0000
summary: msg 25
changeset: 24:10e0acd3809e
user: test
date: Thu Jan 01 00:00:24 1970 +0000
summary: msg 24
changeset: 23:5ec79163bff4
user: test
date: Thu Jan 01 00:00:23 1970 +0000
summary: msg 23
changeset: 22:06c7993750ce
user: test
date: Thu Jan 01 00:00:22 1970 +0000
summary: msg 22
changeset: 21:e5db6aa3fe2a
user: test
date: Thu Jan 01 00:00:21 1970 +0000
summary: msg 21
changeset: 20:7128fb4fdbc9
user: test
date: Thu Jan 01 00:00:20 1970 +0000
summary: msg 20
changeset: 19:52798545b482
user: test
date: Thu Jan 01 00:00:19 1970 +0000
summary: msg 19
changeset: 18:86977a90077e
user: test
date: Thu Jan 01 00:00:18 1970 +0000
summary: msg 18
changeset: 17:03515f4a9080
user: test
date: Thu Jan 01 00:00:17 1970 +0000
summary: msg 17
changeset: 16:a2e6ea4973e9
user: test
date: Thu Jan 01 00:00:16 1970 +0000
summary: msg 16
changeset: 15:e7fa0811edb0
user: test
date: Thu Jan 01 00:00:15 1970 +0000
summary: msg 15
changeset: 14:ce8f0998e922
user: test
date: Thu Jan 01 00:00:14 1970 +0000
summary: msg 14
changeset: 13:9d7d07bc967c
user: test
date: Thu Jan 01 00:00:13 1970 +0000
summary: msg 13
changeset: 12:1941b52820a5
user: test
date: Thu Jan 01 00:00:12 1970 +0000
summary: msg 12
changeset: 11:7b4cd9578619
user: test
date: Thu Jan 01 00:00:11 1970 +0000
summary: msg 11
changeset: 10:7c5eff49a6b6
user: test
date: Thu Jan 01 00:00:10 1970 +0000
summary: msg 10
changeset: 9:eb44510ef29a
user: test
date: Thu Jan 01 00:00:09 1970 +0000
summary: msg 9
changeset: 8:453eb4dba229
user: test
date: Thu Jan 01 00:00:08 1970 +0000
summary: msg 8
changeset: 7:03750880c6b5
user: test
date: Thu Jan 01 00:00:07 1970 +0000
summary: msg 7
changeset: 6:a3d5c6fdf0d3
user: test
date: Thu Jan 01 00:00:06 1970 +0000
summary: msg 6
changeset: 5:7874a09ea728
user: test
date: Thu Jan 01 00:00:05 1970 +0000
summary: msg 5
changeset: 4:9b2ba8336a65
user: test
date: Thu Jan 01 00:00:04 1970 +0000
summary: msg 4
changeset: 3:b53bea5e2fcb
user: test
date: Thu Jan 01 00:00:03 1970 +0000
summary: msg 3
changeset: 2:db07c04beaca
user: test
date: Thu Jan 01 00:00:02 1970 +0000
summary: msg 2
changeset: 1:5cd978ea5149
user: test
date: Thu Jan 01 00:00:01 1970 +0000
summary: msg 1
changeset: 0:b99c7b9c8e11
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: msg 0
% hg up -C
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
% bisect test
Testing changeset 16:a2e6ea4973e9 (30 changesets remaining, ~4 tests)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Testing changeset 23:5ec79163bff4 (15 changesets remaining, ~3 tests)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Testing changeset 27:288867a866e9 (8 changesets remaining, ~3 tests)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Testing changeset 29:b5bd63375ab9 (4 changesets remaining, ~2 tests)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Testing changeset 28:8e0c2264c8af (2 changesets remaining, ~1 tests)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
The first bad revision is:
changeset: 29:b5bd63375ab9
user: test
date: Thu Jan 01 00:00:29 1970 +0000
summary: msg 29