evolve: add test to demonstrate issue6203
Current logic of content-divergence resolution contains a bug that
if resolution parent is not the parent of any of the two divergent
changesets, it could undo some changes.
I think a good solution for this is to first relocate the divergent cset
to it's obsolete parent's successor if applicable and then perform
the content-divergence resolution.
Next patch will fix the issue.
Orphan changeset and trying to relocate a node on top of itself (issue6097)
https://bz.mercurial-scm.org/show_bug.cgi?id=6097
$ . $TESTDIR/testlib/common.sh
$ cat << EOF >> $HGRCPATH
> [extensions]
> rebase =
> evolve =
> EOF
$ hg init issue6097
$ cd issue6097
$ echo apricot > a
$ hg ci -qAm apricot
$ echo banana > b
$ hg ci -qAm banana
Let's go back to amend 0 and make an orphan out of 1
$ hg up -q 0
$ echo coconut > c
$ hg add -q c
$ hg ci --amend -m 'apricot and coconut'
1 new orphan changesets
Now rebase the successor of 0 on top of 1
$ hg rebase -r . -d 1
rebasing 2:32acf8fb1b23 "apricot and coconut" (tip)
1 new orphan changesets
Pruning 1 just to get it out of the way
$ hg prune -q 1
Note how both the regular DAG and the obsolescence graph are linear, but the
paths from 3 to 0 are different: 3-1-0 and 3-2-0
$ hg log -G
@ changeset: 3:2868fe6df617
| tag: tip
| parent: 1:e0486f65907d
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| instability: orphan
| summary: apricot and coconut
|
x changeset: 1:e0486f65907d
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| obsolete: pruned using prune
| summary: banana
|
x changeset: 0:692cc7b6212c
user: test
date: Thu Jan 01 00:00:00 1970 +0000
obsolete: rewritten using amend, rebase as 3:2868fe6df617
summary: apricot
$ hg obslog
@ 2868fe6df617 (3) apricot and coconut
|
x 32acf8fb1b23 (2) apricot and coconut
| rewritten(parent, content) as 2868fe6df617 using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
|
x 692cc7b6212c (0) apricot
rewritten(description, content) as 32acf8fb1b23 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
$ hg evolve -r .
move:[3] apricot and coconut
atop:[-1]
working directory is now at bb847d1d3a5f
$ hg log -G
@ changeset: 4:bb847d1d3a5f
tag: tip
parent: -1:000000000000
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: apricot and coconut
$ hg obslog
@ bb847d1d3a5f (4) apricot and coconut
|
x 2868fe6df617 (3) apricot and coconut
| rewritten(parent) as bb847d1d3a5f using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
|
x 32acf8fb1b23 (2) apricot and coconut
| rewritten(parent, content) as 2868fe6df617 using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
|
x 692cc7b6212c (0) apricot
rewritten(description, content) as 32acf8fb1b23 using amend by test (Thu Jan 01 00:00:00 1970 +0000)