Mercurial > evolve
view tests/test-evolve-order.t @ 6911:e14ae43aed88 mercurial-5.9
test-compat: merge mercurial-6.0 into mercurial-5.9
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Fri, 25 Oct 2024 16:09:37 +0400 |
parents | 53d63b608230 |
children |
line wrap: on
line source
evolve --rev reordering ----------------------- $ cat >> $HGRCPATH <<EOF > [ui] > logtemplate = {rev}:{node|short}@{branch}({phase}) {desc|firstline}\n > [experimental] > evolution.allowdivergence = True > [extensions] > EOF $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH $ mkcommit() { > echo "$1" > "$1" > hg add "$1" > hg ci -m "add $1" > } $ mkstack() { > # Creates a stack of commit based on $1 with messages from $2, $3 .. > hg update "$1" -C > shift > mkcommits $* > } $ mkcommits() { > for i in $@; do mkcommit $i ; done > } Initial setup $ hg init testrevorder $ cd testrevorder $ mkcommits p _a _b _c $ hg phase --public 0 $ hg up 'desc(_a)' 0 files updated, 0 files merged, 2 files removed, 0 files unresolved $ echo "aaa" > _a $ hg amend 2 new orphan changesets $ hg log -G @ 4:12d519679175@default(draft) add _a | | * 3:4d156641b718@default(draft) add _c | | | * 2:4d7242ebb004@default(draft) add _b | | | x 1:2d73fcd7f07d@default(draft) add _a |/ o 0:f92638be10c7@default(public) add p evolve --rev reorders the rev to solve instability, trivial case 2 revs wrong order $ hg evolve --rev 'desc(_c) + desc(_b)' move:[2] add _b atop:[4] add _a move:[3] add _c evolve --rev reorders the rev to solve instability. Harder case, obsolescence accross three stacks in growing rev numbers. $ hg up "desc(_c)" 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ mkcommit _d $ hg up "desc(_a)" 0 files updated, 0 files merged, 3 files removed, 0 files unresolved $ hg amend -m "aprime" 3 new orphan changesets $ hg evolve --rev "desc(_b)" move:[5] add _b atop:[8] aprime $ hg up "desc(_b) - obsolete()" 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg amend -m "bprime" $ hg up "desc(aprime)" 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg amend -m "asecond" 1 new orphan changesets $ hg log -G @ 11:9a584314f3f3@default(draft) asecond | | * 10:a59c79776f7c@default(draft) bprime | | | x 8:81a687b96d4d@default(draft) aprime |/ | * 7:464731bc0ed0@default(draft) add _d | | | * 6:52b8f9b04f83@default(draft) add _c | | | x 5:59476c3836ef@default(draft) add _b | | | x 4:12d519679175@default(draft) add _a |/ o 0:f92638be10c7@default(public) add p $ hg evolve --rev "orphan()" --update move:[10] bprime atop:[11] asecond move:[6] add _c move:[7] add _d working directory is now at 225d2cc5d3fc $ hg log -G @ 14:225d2cc5d3fc@default(draft) add _d | o 13:0fc229278e4d@default(draft) add _c | o 12:c3741b9eafae@default(draft) bprime | o 11:9a584314f3f3@default(draft) asecond | o 0:f92638be10c7@default(public) add p Evolve --rev more complex case: two sets of stacks one with prune an no successor, the other one partially solvable First set of stack: $ mkstack "desc(_d)" c1_ c2_ c3_ c4_ >/dev/null $ mkstack "desc(_d)" c1prime c2prime >/dev/null $ mkstack "desc(_d)" c1second >/dev/null $ hg prune "desc(c1_)" -s "desc(c1prime)" 1 changesets pruned 3 new orphan changesets $ hg prune "desc(c2_)" -s "desc(c2prime)" 1 changesets pruned $ hg prune "desc(c1prime)" -s "desc(c1second)" 1 changesets pruned 1 new orphan changesets $ hg log -G -r "desc(_d)::" @ 21:a329855d0bc1@default(draft) add c1second | | * 20:072276ece1bf@default(draft) add c2prime | | | x 19:f137acd06692@default(draft) add c1prime |/ | * 18:0a1d9b2ce733@default(draft) add c4_ | | | * 17:e2874f41c56c@default(draft) add c3_ | | | x 16:3247c33339fa@default(draft) add c2_ | | | x 15:df322257c182@default(draft) add c1_ |/ o 14:225d2cc5d3fc@default(draft) add _d | ~ Second set of stack with no successor for b2_: $ mkstack "desc(_d)" b1_ b2_ b3_ b4_ >/dev/null $ mkstack "desc(_d)" b1prime b3prime >/dev/null $ hg prune "desc(b1_)" -s "desc(b1prime)" 1 changesets pruned 3 new orphan changesets $ hg prune "desc(b3_)" -s "desc(b3prime)" 1 changesets pruned $ hg prune "desc(b2_)" 1 changesets pruned $ hg log -G -r "desc(_d)::" @ 27:ba4c348b6d5e@default(draft) add b3prime | o 26:8fe985f5d0aa@default(draft) add b1prime | | * 25:1d9ba2e75c93@default(draft) add b4_ | | | x 24:aec6a9657b6c@default(draft) add b3_ | | | x 23:a69b58575918@default(draft) add b2_ | | | x 22:3564eb18e448@default(draft) add b1_ |/ | o 21:a329855d0bc1@default(draft) add c1second |/ | * 20:072276ece1bf@default(draft) add c2prime | | | x 19:f137acd06692@default(draft) add c1prime |/ | * 18:0a1d9b2ce733@default(draft) add c4_ | | | * 17:e2874f41c56c@default(draft) add c3_ | | | x 16:3247c33339fa@default(draft) add c2_ | | | x 15:df322257c182@default(draft) add c1_ |/ o 14:225d2cc5d3fc@default(draft) add _d | ~ Solve the full second stack and only part of the first one $ echo "(desc(_d)::) - desc(c3_)" (desc(_d)::) - desc(c3_) $ hg evolve --rev "(desc(_d)::) - desc(c3_)" skipping 0a1d9b2ce733, consider including orphan ancestors move:[20] add c2prime atop:[21] add c1second move:[25] add b4_ atop:[27] add b3prime Cleanup $ hg evolve --rev "(desc(_d)::)" --update move:[17] add c3_ atop:[28] add c2prime move:[18] add c4_ working directory is now at 4ee8feb52325 $ hg log -G -r "desc(_d)::" @ 31:4ee8feb52325@default(draft) add c4_ | o 30:08a530ce67e1@default(draft) add c3_ | | o 29:4897c8ed7645@default(draft) add b4_ | | o | 28:3abc7618dd5f@default(draft) add c2prime | | | o 27:ba4c348b6d5e@default(draft) add b3prime | | | o 26:8fe985f5d0aa@default(draft) add b1prime | | o | 21:a329855d0bc1@default(draft) add c1second |/ o 14:225d2cc5d3fc@default(draft) add _d | ~ Test multiple revision with some un-evolvable because parent is split --------------------------------------------------------------------- $ hg up 'desc(c2prime)' 0 files updated, 0 files merged, 2 files removed, 0 files unresolved $ mkcommit c3part1 created new head $ hg prev 0 files updated, 0 files merged, 1 files removed, 0 files unresolved [28] add c2prime $ mkcommit c3part2 created new head $ hg prune -s 'desc(c3part1)' 'desc(c3_)' 1 changesets pruned 1 new orphan changesets $ hg prune -s 'desc(c3part2)' 'desc(c3_)' 1 changesets pruned 2 new content-divergent changesets $ hg up 'desc(b3prime)' 2 files updated, 0 files merged, 3 files removed, 0 files unresolved $ hg amend -m 'b3second' 1 new orphan changesets $ hg evolve --rev "orphan()" move:[29] add b4_ atop:[34] b3second skipping 08a530ce67e1: divergent rewriting. can't choose destination