Mercurial > evolve
view tests/test-evolve-issue6097.t @ 5207:a5876853ba15 stable
evolve: support successors of ancestor of orphan with multiple roots
The previous code checked that the set of successors has a single root.
However, there’s no reason to require that in general.
Example:
o 6
|
o 5
|\
| o 4
| |
o | 3
|/
| * 2
| |
| x 1
|/
o 0
1 is obsoleted by 3, 4 and 6. We are considering the case when 2 gets evolved.
The roots are [3, 4] and the heads are [6]. Before the change, the user was
asked which destination to choose, but there was only one choice (6). After the
change, 6 is chosen as the destination.
author | Manuel Jacob <me@manueljacob.de> |
---|---|
date | Wed, 11 Mar 2020 16:05:53 +0100 |
parents | 900668a93629 |
children | 417503ef667d |
line wrap: on
line source
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 | rebased(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)