# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 1521028220 -19800 # Node ID 8b5093f333dcfc4d9121de67e458a72e0cdc88ec # Parent 8432bc9890530267f1116ba5461091f4fe6adda6 tests: add a test about evolve stabilizing orphan caused by splits There are some similar tests lying around in the test suite but they are not well arranged. I wanted the test suite to be a goto reference for all the behaviors till the time we get all of them documented. diff -r 8432bc989053 -r 8b5093f333dc tests/test-evolve-orphan-split.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-evolve-orphan-split.t Wed Mar 14 17:20:20 2018 +0530 @@ -0,0 +1,192 @@ +** Testing resolution of orphans by `hg evolve` where an obsolete changeset has +multiple successors ** + + $ cat >> $HGRCPATH < [ui] + > interactive = True + > [alias] + > glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}" + > [extensions] + > rebase = + > EOF + $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH + +Repo Setup + + $ hg init repo + $ cd repo + $ echo ".*\.orig" > .hgignore + $ hg add .hgignore + $ hg ci -m "added hgignore" + +An orphan changeset with parent got splitted +-------------------------------------------- + + $ for ch in a b c; do echo foo > $ch; done; + + $ hg add a b + $ hg ci -m "added a and b" + $ hg add c + $ hg ci -m "added c" + + $ hg glog + @ 2:86e1ebf1ca61 added c + | () draft + o 1:d0ddb614efbd added a and b + | () draft + o 0:8fa14d15e168 added hgignore + () draft + + $ hg split -r 1 < y + > y + > n + > y + > EOF + 0 files updated, 0 files merged, 3 files removed, 0 files unresolved + adding a + adding b + diff --git a/a b/a + new file mode 100644 + examine changes to 'a'? [Ynesfdaq?] y + + @@ -0,0 +1,1 @@ + +foo + record change 1/2 to 'a'? [Ynesfdaq?] y + + diff --git a/b b/b + new file mode 100644 + examine changes to 'b'? [Ynesfdaq?] n + + created new head + Done splitting? [yN] y + 1 new orphan changesets + + $ hg glog + @ 4:8b179cffc81c added a and b + | () draft + o 3:bd3735d4dab0 added a and b + | () draft + | * 2:86e1ebf1ca61 added c + | | () draft + | x 1:d0ddb614efbd added a and b + |/ () draft + o 0:8fa14d15e168 added hgignore + () draft + + $ hg evolve + move:[2] added c + atop:[4] added a and b + working directory is now at af13f0560b31 + + $ hg glog + @ 5:af13f0560b31 added c + | () draft + o 4:8b179cffc81c added a and b + | () draft + o 3:bd3735d4dab0 added a and b + | () draft + o 0:8fa14d15e168 added hgignore + () draft + +When the successors does not form a linear chain and are multiple heads +----------------------------------------------------------------------- + + $ hg fold -r .^^::. --exact -m "added a b c" + 3 changesets folded + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + + $ hg glog + @ 6:f89e4764f2ed added a b c + | () draft + o 0:8fa14d15e168 added hgignore + () draft + $ echo foo > d + $ hg ci -Aqm "added d" + + $ hg glog + @ 7:d48a30875f01 added d + | () draft + o 6:f89e4764f2ed added a b c + | () draft + o 0:8fa14d15e168 added hgignore + () draft + $ hg prev + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + [6] added a b c + $ hg split -r . < y + > n + > y + > y + > y + > y + > y + > EOF + 0 files updated, 0 files merged, 3 files removed, 0 files unresolved + adding a + adding b + adding c + diff --git a/a b/a + new file mode 100644 + examine changes to 'a'? [Ynesfdaq?] y + + @@ -0,0 +1,1 @@ + +foo + record change 1/3 to 'a'? [Ynesfdaq?] n + + diff --git a/b b/b + new file mode 100644 + examine changes to 'b'? [Ynesfdaq?] y + + @@ -0,0 +1,1 @@ + +foo + record change 2/3 to 'b'? [Ynesfdaq?] y + + diff --git a/c b/c + new file mode 100644 + examine changes to 'c'? [Ynesfdaq?] y + + @@ -0,0 +1,1 @@ + +foo + record change 3/3 to 'c'? [Ynesfdaq?] y + + created new head + Done splitting? [yN] y + 1 new orphan changesets + + $ hg glog + @ 9:c0fbf8aaf6c4 added a b c + | () draft + o 8:f2632392aefe added a b c + | () draft + | * 7:d48a30875f01 added d + | | () draft + | x 6:f89e4764f2ed added a b c + |/ () draft + o 0:8fa14d15e168 added hgignore + () draft + + $ hg rebase -r . -d 8fa14d15e168 + rebasing 9:c0fbf8aaf6c4 "added a b c" (tip) + $ hg glog + @ 10:7f87764e5b64 added a b c + | () draft + | o 8:f2632392aefe added a b c + |/ () draft + | * 7:d48a30875f01 added d + | | () draft + | x 6:f89e4764f2ed added a b c + |/ () draft + o 0:8fa14d15e168 added hgignore + () draft + + $ hg evolve --dry-run + cannot solve split across two branches + +XXX: this sounds like a good thing, maybe we should suggest using commands like +grab or rebase to resolve this. Moreover showing the branch heads or list of +successors on different branches will be good. + + $ hg evolve --all + cannot solve split across two branches