tests: demonstrate broken rebase of merge with p1's successor in dest
The fix in 8ede973597fd (rebase: handle successor targets (issue5198),
2016-04-11) only fixed the case where p2's successor was in the
destination, and only when the successor was exactly the destination
(i.e. not when the successor was an ancestor of it). This patch adds a
test case for when p1's successor is in the destination. It adds
another one for when the successor is an ancestor of the
destination. To do that simply, it also rewrites the test case using
drawdag.
Differential Revision: https://phab.mercurial-scm.org/D211
https://bz.mercurial-scm.org/672
# 0-2-4
# \ \ \
# 1-3-5
#
# rename in #1, content change in #4.
$ hg init
$ touch 1
$ touch 2
$ hg commit -Am init # 0
adding 1
adding 2
$ hg rename 1 1a
$ hg commit -m rename # 1
$ hg co -C 0
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo unrelated >> 2
$ hg ci -m unrelated1 # 2
created new head
$ hg merge --debug 1
searching for copies back to rev 1
unmatched files in other:
1a
all copies found (* = to merge, ! = divergent, % = renamed and deleted):
src: '1' -> dst: '1a'
checking for directory renames
resolving manifests
branchmerge: True, force: False, partial: False
ancestor: 81f4b099af3d, local: c64f439569a9+, remote: c12dcd37c90a
1: other deleted -> r
removing 1
1a: remote created -> g
getting 1a
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m merge1 # 3
$ hg co -C 2
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo hello >> 1
$ hg ci -m unrelated2 # 4
created new head
$ hg co -C 3
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge -y --debug 4
searching for copies back to rev 1
unmatched files in local:
1a
all copies found (* = to merge, ! = divergent, % = renamed and deleted):
src: '1' -> dst: '1a' *
checking for directory renames
resolving manifests
branchmerge: True, force: False, partial: False
ancestor: c64f439569a9, local: e327dca35ac8+, remote: 746e9549ea96
preserving 1a for resolve of 1a
starting 4 threads for background file closing (?)
1a: local copied/moved from 1 -> m (premerge)
picked tool ':merge' for 1a (binary False symlink False changedelete False)
merging 1a and 1 to 1a
my 1a@e327dca35ac8+ other 1@746e9549ea96 ancestor 1@c64f439569a9
premerge successful
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg co -C 4
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge -y --debug 3
searching for copies back to rev 1
unmatched files in other:
1a
all copies found (* = to merge, ! = divergent, % = renamed and deleted):
src: '1' -> dst: '1a' *
checking for directory renames
resolving manifests
branchmerge: True, force: False, partial: False
ancestor: c64f439569a9, local: 746e9549ea96+, remote: e327dca35ac8
preserving 1 for resolve of 1a
removing 1
starting 4 threads for background file closing (?)
1a: remote moved from 1 -> m (premerge)
picked tool ':merge' for 1a (binary False symlink False changedelete False)
merging 1 and 1a to 1a
my 1a@746e9549ea96+ other 1a@e327dca35ac8 ancestor 1@c64f439569a9
premerge successful
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)