Mercurial > evolve
diff tests/test-stack-branch.t @ 2669:b933a8068c17
topic: add some initial support for using stack on named branch
Stack is a useful command that can make sense in other context. The current
support is hacky and awful, but we have something!
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 28 Jun 2017 02:45:57 +0200 |
parents | |
children | f5d52fa1cd55 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-stack-branch.t Wed Jun 28 02:45:57 2017 +0200 @@ -0,0 +1,257 @@ + + $ . "$TESTDIR/testlib/topic_setup.sh" + +Initial setup + + $ cat << EOF >> $HGRCPATH + > [ui] + > logtemplate = {rev} {branch} \{{get(namespaces, "topics")}} {phase} {desc|firstline}\n + > [experimental] + > evolution=createmarkers,exchange,allowunstable + > EOF + + $ hg init main + $ cd main + $ hg branch other + marked working directory as branch other + (branches are permanent and global, did you want a bookmark?) + $ echo aaa > aaa + $ hg add aaa + $ hg commit -m c_a + $ echo aaa > bbb + $ hg add bbb + $ hg commit -m c_b + $ hg branch foo + marked working directory as branch foo + $ echo aaa > ccc + $ hg add ccc + $ hg commit -m c_c + $ echo aaa > ddd + $ hg add ddd + $ hg commit -m c_d + $ echo aaa > eee + $ hg add eee + $ hg commit -m c_e + $ echo aaa > fff + $ hg add fff + $ hg commit -m c_f + $ hg log -G + @ 5 foo {} draft c_f + | + o 4 foo {} draft c_e + | + o 3 foo {} draft c_d + | + o 2 foo {} draft c_c + | + o 1 other {} draft c_b + | + o 0 other {} draft c_a + + +Check that topic without any parent does not crash --list +--------------------------------------------------------- + + $ hg up other + 0 files updated, 0 files merged, 4 files removed, 0 files unresolved + $ hg stack + ### topic: None + ### branch: other + b2@ c_b (current) + b1: c_a + $ hg phase --public 'branch("other")' + $ hg up foo + 4 files updated, 0 files merged, 0 files removed, 0 files unresolved + +Simple test +----------- + +'hg stack' list all changeset in the topic + + $ hg branch + foo + $ hg stack + ### topic: None + ### branch: foo + b4@ c_f (current) + b3: c_e + b2: c_d + b1: c_c + ^ c_b + +Test "t#" reference +------------------- + + $ hg up b2 + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ hg up foo + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg up b42 + abort: cannot resolve "b42": branch "foo" has only 4 changesets + [255] + $ hg up b2 + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ hg summary + parent: 3:f61adbacd17a + c_d + branch: foo + commit: (clean) + update: 2 new changesets (update) + phases: 4 draft + +Case with some of the branch unstable +------------------------------------ + + $ echo bbb > ddd + $ hg commit --amend + $ hg log -G + @ 7 foo {} draft c_d + | + | o 5 foo {} draft c_f + | | + | o 4 foo {} draft c_e + | | + | x 3 foo {} draft c_d + |/ + o 2 foo {} draft c_c + | + o 1 other {} public c_b + | + o 0 other {} public c_a + + $ hg stack + ### topic: None + ### branch: foo + b4$ c_f (unstable) + b3$ c_e (unstable) + b2@ c_d (current) + b1: c_c + ^ c_b + $ hg up b3 + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg stack + ### topic: None + ### branch: foo + b4$ c_f (unstable) + b3$ c_e (current unstable) + b2: c_d + b1: c_c + ^ c_b + $ hg up b2 + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + +Also test the revset: + + $ hg log -r 'stack()' + abort: no active topic to list + [255] + +Case with multiple heads on the topic +------------------------------------- + +Make things linear again + + $ hg rebase -s 'desc(c_e)' -d 'desc(c_d) - obsolete()' + rebasing 4:4f2a69f6d380 "c_e" + rebasing 5:913c298d8b0a "c_f" + $ hg log -G + o 9 foo {} draft c_f + | + o 8 foo {} draft c_e + | + @ 7 foo {} draft c_d + | + o 2 foo {} draft c_c + | + o 1 other {} public c_b + | + o 0 other {} public 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 + $ hg log -G + @ 11 foo {} draft c_h + | + o 10 foo {} draft c_g + | + | o 9 foo {} draft c_f + | | + | o 8 foo {} draft c_e + |/ + o 7 foo {} draft c_d + | + o 2 foo {} draft c_c + | + o 1 other {} public c_b + | + o 0 other {} public c_a + + +Test output + + $ hg stack + ### topic: None (2 heads) + ### branch: foo + b6: c_f + b5: c_e + b2^ c_d (base) + b4@ c_h (current) + b3: c_g + b2: c_d + b1: c_c + ^ c_b + +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:2ebb6e48ab8a "c_g" + rebasing 11:634f38e27a1d "c_h" + $ hg log -G + o 15 foo {} draft c_h + | + o 14 foo {} draft c_g + | + @ 13 foo {} draft c_D + | + | o 9 foo {} draft c_f + | | + | o 8 foo {} draft c_e + | | + | x 7 foo {} draft c_d + |/ + o 2 foo {} draft c_c + | + o 1 other {} public c_b + | + o 0 other {} public c_a + + + $ hg stack + ### topic: None (2 heads) + ### branch: foo + b6$ c_f (unstable) + b5$ c_e (unstable) + b2^ c_D (base) + b4: c_h + b3: c_g + b2@ c_D (current) + b1: c_c + ^ c_b +