Mercurial > evolve
view tests/test-topic-stack.t @ 1910:24986e5a537c
stack: add a 'stack()' revset
We give access to the list of relevant commit with a revset. Benefits over
'topic(.)' are the filtering of obsolete changeset and the reordering (to
topological as-in unstability were resolved).
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Thu, 17 Mar 2016 09:13:12 -0700 |
parents | 36112e361ee4 |
children | bdc5bb223b50 |
line wrap: on
line source
$ . "$TESTDIR/testlib" Initial setup $ cat << EOF >> $HGRCPATH > [ui] > logtemplate = {rev} {branch} \{{get(namespaces, "topics")}} {phase} {desc|firstline}\n > [experimental] > evolution=createmarkers,exchange,allowunstable > EOF (new head warning seems buggy) $ hg init main $ cd main $ echo aaa > aaa $ hg add aaa $ hg commit -m c_a $ echo aaa > bbb $ hg add bbb $ hg commit -m c_b $ hg topic foo $ echo aaa > ccc $ hg add ccc $ hg commit -m c_c $ echo aaa > ddd $ hg add ddd $ hg commit -m c_d created new head $ echo aaa > eee $ hg add eee $ hg commit -m c_e created new head $ echo aaa > fff $ hg add fff $ hg commit -m c_f created new head $ hg log -G @ 5 default {foo} draft c_f | o 4 default {foo} draft c_e | o 3 default {foo} draft c_d | o 2 default {foo} draft c_c | o 1 default {} draft c_b | o 0 default {} draft c_a Simple test ----------- hg topic -l list all changeset in the topic $ hg topic * foo $ hg topic --list _ c_b t0: c_c t1: c_d t2: c_e t3@ c_f (current) error case, nothing to list $ hg topic --clear $ hg topic --list abort: no active topic to list [255] Test "t#" reference ------------------- $ hg up t1 abort: cannot resolve "t1": no active topic [255] $ hg topic foo $ hg up t42 abort: cannot resolve "t42": topic "foo" has only 4 changesets [255] $ hg up t1 0 files updated, 0 files merged, 2 files removed, 0 files unresolved Case with some of the topic unstable ------------------------------------ $ echo bbb > ddd $ hg commit --amend $ hg log -G @ 7 default {foo} draft c_d | | o 5 default {foo} draft c_f | | | o 4 default {foo} draft c_e | | | x 3 default {foo} draft c_d |/ o 2 default {foo} draft c_c | o 1 default {} draft c_b | o 0 default {} draft c_a $ hg topic --list _ c_b t0: c_c t1@ c_d (current) t2$ c_e (unstable) t3$ c_f (unstable) Also test the revset: $ hg log -r 'stack()' 2 default {foo} draft c_c 7 default {foo} draft c_d 4 default {foo} draft c_e 5 default {foo} draft c_f Case with multiple heads on the topic ------------------------------------- Make things linear again $ hg rebase -s 'desc(c_e)' -d 'desc(c_d) - obsolete()' rebasing 4:91fa8808d101 "c_e" rebasing 5:4ec5094907b7 "c_f" $ hg log -G o 9 default {foo} draft c_f | o 8 default {foo} draft c_e | @ 7 default {foo} draft c_d | o 2 default {foo} draft c_c | o 1 default {} draft c_b | o 0 default {} draft c_a Create the second branch $ hg up 'desc(c_d)' 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ echo aaa > ggg $ hg add ggg $ hg commit -m c_g created new head $ echo aaa > hhh $ hg add hhh $ hg commit -m c_h created new head $ hg log -G @ 11 default {foo} draft c_h | o 10 default {foo} draft c_g | | o 9 default {foo} draft c_f | | | o 8 default {foo} draft c_e |/ o 7 default {foo} draft c_d | o 2 default {foo} draft c_c | o 1 default {} draft c_b | o 0 default {} draft c_a Test output $ hg top -l _ c_b t0: c_c t1: c_d t2: c_g t3@ c_h (current) _ c_d t4: c_e t5: c_f Case with multiple heads on the topic with unstability involved --------------------------------------------------------------- We amend the message to make sure the display base pick the right changeset $ hg up 'desc(c_d)' 0 files updated, 0 files merged, 2 files removed, 0 files unresolved $ echo ccc > ddd $ hg commit --amend -m 'c_D' $ hg rebase -d . -s 'desc(c_g)' rebasing 10:11286b4fcb3d "c_g" rebasing 11:3ad57527186d "c_h" $ hg log -G o 15 default {foo} draft c_h | o 14 default {foo} draft c_g | @ 13 default {foo} draft c_D | | o 9 default {foo} draft c_f | | | o 8 default {foo} draft c_e | | | x 7 default {foo} draft c_d |/ o 2 default {foo} draft c_c | o 1 default {} draft c_b | o 0 default {} draft c_a $ hg topic --list _ c_b t0: c_c t1@ c_D (current) t2: c_g t3: c_h _ c_D t4$ c_e (unstable) t5$ c_f (unstable)