merge: fix --preview to show all nodes that will be merged (
issue2043).
Formerly, it omitted nodes that were not descendants of the least
common ancestor of the two merge parents, even though those nodes
contribute to the merge. The new algorithm uses revlog.findmissing()
instead of ancestor() + nodesbetween().
1 files updated, 0 files merged, 2 files removed, 0 files unresolved
merging a and e to e
2 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
% convert from null revision
initializing destination empty repository
scanning source...
sorting...
converting...
% convert from zero revision
initializing destination full repository
scanning source...
sorting...
converting...
5 0: add a b
4 1: add c
3 2: copy e from a, change b
2 3: change a
1 4: merge 2 and 3, copy d from b
0 5: change a
o 5 "5: change a" files: a
|
o 4 "4: merge 2 and 3, copy d from b" files: d e
|\
| o 3 "3: change a" files: a
| |
o | 2 "2: copy e from a, change b" files: b e
| |
o | 1 "1: add c" files: c
|/
o 0 "0: add a b" files: a b
% convert from merge parent
initializing destination conv1 repository
scanning source...
sorting...
converting...
3 1: add c
2 2: copy e from a, change b
1 4: merge 2 and 3, copy d from b
0 5: change a
o 3 "5: change a" files: a
|
o 2 "4: merge 2 and 3, copy d from b" files: a d e
|
o 1 "2: copy e from a, change b" files: b e
|
o 0 "1: add c" files: a b c
% check copy preservation
changeset: 2:d67b1d48a835
user: test
date: Thu Jan 01 00:00:04 1970 +0000
summary: 4: merge 2 and 3, copy d from b
changeset: 1:462c431cf47d
user: test
date: Thu Jan 01 00:00:02 1970 +0000
summary: 2: copy e from a, change b
% check copy removal on missing parent
changeset: 2:d67b1d48a835
user: test
date: Thu Jan 01 00:00:04 1970 +0000
summary: 4: merge 2 and 3, copy d from b
a
a
a
b
b
% convert from merge
initializing destination conv4 repository
scanning source...
sorting...
converting...
1 4: merge 2 and 3, copy d from b
0 5: change a
o 1 "5: change a" files: a
|
o 0 "4: merge 2 and 3, copy d from b" files: a b c d e
5 files updated, 0 files merged, 0 files removed, 0 files unresolved
a
a
a
b
b