Mercurial > evolve
diff tests/test-topic.t @ 2109:90ab79764ce4 mercurial-4.0
mercurial-4.0: merge with future 6.0.0
A new version will be released soon, we start handling mismatch in test output
to make the actual release time smoother.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Tue, 14 Mar 2017 14:38:10 -0700 |
parents | db617700d318 |
children | 26ec0839865b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-topic.t Tue Mar 14 14:38:10 2017 -0700 @@ -0,0 +1,654 @@ + $ . "$TESTDIR/testlib/topic_setup.sh" + + $ hg init pinky + $ cd pinky + $ cat <<EOF >> .hg/hgrc + > [phases] + > publish=false + > EOF + $ cat <<EOF >> $HGRCPATH + > [experimental] + > # disable the new graph style until we drop 3.7 support + > graphstyle.missing = | + > EOF + + $ hg help topics + hg topics [TOPIC] + + View current topic, set current topic, or see all topics. + + The --verbose version of this command display various information on the + state of each topic. + + options: + + --clear clear active topic if any + --change VALUE revset of existing revisions to change topic + -l --list show the stack of changeset in the topic + + (some details hidden, use --verbose to show complete help) + $ hg topics + +Test topics interaction with evolution: + + $ hg topics --config experimental.evolution= + $ hg topics --config experimental.evolution= --change . bob + abort: must have obsolete enabled to use --change + [255] + +Create some changes: + + $ for x in alpha beta gamma delta ; do + > echo file $x >> $x + > hg addremove + > hg ci -m "Add file $x" + > done + adding alpha + adding beta + adding gamma + adding delta + +Still no topics + $ hg topics + +Test commit flag and help text + + $ echo stuff >> alpha + $ HGEDITOR=cat hg ci -t topicflag + + + HG: Enter commit message. Lines beginning with 'HG:' are removed. + HG: Leave message empty to abort commit. + HG: -- + HG: user: test + HG: topic 'topicflag' + HG: branch 'default' + HG: changed alpha + abort: empty commit message + [255] + $ hg revert alpha + $ hg topic + * topicflag + +Make a topic + $ hg topic narf + $ hg topics + * narf + $ echo topic work >> alpha + $ hg ci -m 'start on narf' + $ hg co .^ + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg topic fran + $ hg topics + * fran + narf + $ echo >> fran work >> beta + $ hg ci -m 'start on fran' + $ hg co narf + switching to topic narf + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg topic + fran + * narf + $ hg log -r . -T '{topics}\n' + narf + $ echo 'narf!!!' >> alpha + $ hg ci -m 'narf!' + $ hg log -G + @ changeset: 6:7c34953036d6 + | tag: tip + | topic: narf + | parent: 4:fb147b0b417c + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: narf! + | + | o changeset: 5:0469d521db49 + | | topic: fran + | | parent: 3:a53952faf762 + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: start on fran + | | + o | changeset: 4:fb147b0b417c + |/ topic: narf + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: start on narf + | + o changeset: 3:a53952faf762 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: Add file delta + | + o changeset: 2:15d1eb11d2fa + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: Add file gamma + | + o changeset: 1:c692ea2c9224 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: Add file beta + | + o changeset: 0:c2b7d2f7d14b + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Add file alpha + + +Exchanging of topics: + $ cd .. + $ hg init brain + $ hg -R pinky push -r 4 brain + pushing to brain + searching for changes + adding changesets + adding manifests + adding file changes + added 5 changesets with 5 changes to 4 files + +Export + + $ hg -R pinky export + # HG changeset patch + # User test + # Date 0 0 + # Thu Jan 01 00:00:00 1970 +0000 + # Node ID 7c34953036d6a36eae468c550d0592b89ee8bffc + # Parent fb147b0b417c25ca15547cd945acf51cf8dcaf02 + # EXP-Topic narf + narf! + + diff -r fb147b0b417c -r 7c34953036d6 alpha + --- a/alpha Thu Jan 01 00:00:00 1970 +0000 + +++ b/alpha Thu Jan 01 00:00:00 1970 +0000 + @@ -1,2 +1,3 @@ + file alpha + topic work + +narf!!! + +Import + + $ hg -R pinky export > narf.diff + $ hg -R pinky --config extensions.strip= strip . + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + saved backup bundle to $TESTTMP/pinky/.hg/strip-backup/7c34953036d6-1ff3bae2-backup.hg (glob) + $ hg -R pinky import narf.diff + applying narf.diff + $ hg -R pinky log -r . + changeset: 6:7c34953036d6 + tag: tip + topic: narf + parent: 4:fb147b0b417c + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: narf! + +Now that we've pushed to brain, the work done on narf is no longer a +draft, so we won't see that topic name anymore: + + $ hg log -R pinky -G + @ changeset: 6:7c34953036d6 + | tag: tip + | topic: narf + | parent: 4:fb147b0b417c + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: narf! + | + | o changeset: 5:0469d521db49 + | | topic: fran + | | parent: 3:a53952faf762 + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: start on fran + | | + o | changeset: 4:fb147b0b417c + |/ user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: start on narf + | + o changeset: 3:a53952faf762 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: Add file delta + | + o changeset: 2:15d1eb11d2fa + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: Add file gamma + | + o changeset: 1:c692ea2c9224 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: Add file beta + | + o changeset: 0:c2b7d2f7d14b + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Add file alpha + + $ cd brain + $ hg co tip + 4 files updated, 0 files merged, 0 files removed, 0 files unresolved + +Because the change is public, we won't inherit the topic from narf. + + $ hg topic + $ echo what >> alpha + $ hg topic query + $ hg ci -m 'what is narf, pinky?' + $ hg log -Gl2 + @ changeset: 5:c01515cfc331 + | tag: tip + | topic: query + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: what is narf, pinky? + | + o changeset: 4:fb147b0b417c + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: start on narf + | + $ hg push -f ../pinky -r query + pushing to ../pinky + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + $ hg -R ../pinky log -Gl 4 + o changeset: 7:c01515cfc331 + | tag: tip + | topic: query + | parent: 4:fb147b0b417c + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: what is narf, pinky? + | + | @ changeset: 6:7c34953036d6 + |/ topic: narf + | parent: 4:fb147b0b417c + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: narf! + | + | o changeset: 5:0469d521db49 + | | topic: fran + | | parent: 3:a53952faf762 + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: start on fran + | | + o | changeset: 4:fb147b0b417c + |/ user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: start on narf + | + $ hg topics + * query + $ cd ../pinky + $ hg co query + switching to topic query + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ echo answer >> alpha + $ hg ci -m 'Narf is like `zort` or `poit`!' + $ hg merge narf + merging alpha + warning: conflicts while merging alpha! (edit, then use 'hg resolve --mark') + 0 files updated, 0 files merged, 0 files removed, 1 files unresolved + use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon + [1] + $ hg revert -r narf alpha + $ hg resolve -m alpha + (no more unresolved files) + $ hg topic narf + $ hg ci -m 'Finish narf' + $ hg topics + fran + * narf + query + $ hg debugnamecomplete # branch:topic here is a buggy side effect + default + default:fran + default:narf + default:query + fran + narf + query + tip + $ hg phase --public narf + +POSSIBLE BUG: narf topic stays alive even though we just made all +narf commits public: + + $ hg topics + fran + * narf + $ hg log -Gl 6 + @ changeset: 9:ae074045b7a7 + |\ tag: tip + | | parent: 8:54c943c1c167 + | | parent: 6:7c34953036d6 + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: Finish narf + | | + | o changeset: 8:54c943c1c167 + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: Narf is like `zort` or `poit`! + | | + | o changeset: 7:c01515cfc331 + | | parent: 4:fb147b0b417c + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: what is narf, pinky? + | | + o | changeset: 6:7c34953036d6 + |/ parent: 4:fb147b0b417c + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: narf! + | + | o changeset: 5:0469d521db49 + | | topic: fran + | | parent: 3:a53952faf762 + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: start on fran + | | + o | changeset: 4:fb147b0b417c + |/ user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: start on narf + | + $ cd ../brain + $ hg topics + * query + $ hg pull ../pinky -r narf + pulling from ../pinky + abort: unknown revision 'narf'! + [255] + $ hg pull ../pinky -r default + pulling from ../pinky + searching for changes + adding changesets + adding manifests + adding file changes + added 3 changesets with 3 changes to 1 files + (run 'hg update' to get a working copy) + $ hg topics + * query + +We can pull in the draft-phase change and we get the new topic + + $ hg pull ../pinky + pulling from ../pinky + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + (run 'hg heads' to see heads) + $ hg topics + fran + * query + $ hg log -Gr 'draft()' + o changeset: 9:0469d521db49 + | tag: tip + | topic: fran + | parent: 3:a53952faf762 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: start on fran + | + +query is not an open topic, so when we clear the current topic it'll +disappear: + + $ hg topics --clear + $ hg topics + fran + +--clear when we don't have an active topic isn't an error: + + $ hg topics --clear + +Topic revset + $ hg log -r 'topic()' -G + o changeset: 9:0469d521db49 + | tag: tip + | topic: fran + | parent: 3:a53952faf762 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: start on fran + | + $ hg log -r 'not topic()' -G + o changeset: 8:ae074045b7a7 + |\ parent: 7:54c943c1c167 + | | parent: 6:7c34953036d6 + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: Finish narf + | | + | o changeset: 7:54c943c1c167 + | | parent: 5:c01515cfc331 + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: Narf is like `zort` or `poit`! + | | + o | changeset: 6:7c34953036d6 + | | parent: 4:fb147b0b417c + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: narf! + | | + | @ changeset: 5:c01515cfc331 + |/ user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: what is narf, pinky? + | + o changeset: 4:fb147b0b417c + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: start on narf + | + o changeset: 3:a53952faf762 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: Add file delta + | + o changeset: 2:15d1eb11d2fa + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: Add file gamma + | + o changeset: 1:c692ea2c9224 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: Add file beta + | + o changeset: 0:c2b7d2f7d14b + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Add file alpha + +No matches because narf is already closed: + $ hg log -r 'topic(narf)' -G +This regexp should match the topic `fran`: + $ hg log -r 'topic("re:.ra.")' -G + o changeset: 9:0469d521db49 + | tag: tip + | topic: fran + | parent: 3:a53952faf762 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: start on fran + | +Exact match on fran: + $ hg log -r 'topic(fran)' -G + o changeset: 9:0469d521db49 + | tag: tip + | topic: fran + | parent: 3:a53952faf762 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: start on fran + | + +Match current topic: + $ hg topic + fran + $ hg log -r 'topic(.)' +(no output is expected) + $ hg co fran + switching to topic fran + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg log -r 'topic(.)' + changeset: 9:0469d521db49 + tag: tip + topic: fran + parent: 3:a53952faf762 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: start on fran + + +Deactivate the topic. + $ hg topics + * fran + $ hg topics --clear + $ echo fran? >> beta + $ hg ci -m 'fran?' + created new head + $ hg log -Gr 'draft()' + @ changeset: 10:4073470c35e1 + | tag: tip + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: fran? + | + o changeset: 9:0469d521db49 + | topic: fran + | parent: 3:a53952faf762 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: start on fran + | + $ hg topics + fran +Changing topic fails if we don't give a topic + $ hg topic --change 9 + abort: changing topic requires a topic name or --clear + [255] + +Can't change topic of a public change + $ hg topic --change 1:: --clear + abort: can't change topic of a public change + [255] + +Can clear topics + $ hg topic --change 9 --clear + changed topic on 1 changes + please run hg evolve --rev "not topic()" now + $ hg log -Gr 'draft() and not obsolete()' + o changeset: 11:783930e1d79e + | tag: tip + | parent: 3:a53952faf762 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: start on fran + | + | @ changeset: 10:4073470c35e1 + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: fran? + | | + +Normally you'd do this with evolve, but we'll use rebase to avoid +bonus deps in the testsuite. + + $ hg rebase -d tip -s . + rebasing 10:4073470c35e1 "fran?" + +Can add a topic to an existing change + $ hg topic --change 11 wat + changed topic on 1 changes + please run hg evolve --rev "topic(wat)" now + $ hg log -Gr 'draft() and not obsolete()' + o changeset: 13:d91cd8fd490e + | tag: tip + | topic: wat + | parent: 3:a53952faf762 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: start on fran + | + | @ changeset: 12:d9e32f4c4806 + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: fran? + | | + +Normally you'd do this with evolve, but we'll use rebase to avoid +bonus deps in the testsuite. + + $ hg rebase -d tip -s . + rebasing 12:d9e32f4c4806 "fran?" + + $ hg log -Gr 'draft()' + @ changeset: 14:cf24ad8bbef5 + | tag: tip + | topic: wat + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: fran? + | + o changeset: 13:d91cd8fd490e + | topic: wat + | parent: 3:a53952faf762 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: start on fran + | + +Amend a topic + + $ hg topic watwat + $ hg ci --amend + $ hg log -Gr 'draft()' + @ changeset: 16:893ffcf66c1f + | tag: tip + | topic: watwat + | parent: 13:d91cd8fd490e + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: fran? + | + o changeset: 13:d91cd8fd490e + | topic: wat + | parent: 3:a53952faf762 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: start on fran + | + +Clear and amend: + + $ hg topic --clear + $ hg ci --amend + $ hg log -r . + changeset: 18:a13639e22b65 + tag: tip + parent: 13:d91cd8fd490e + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: fran? + +Readding the same topic with topic --change should work: + $ hg topic --change . watwat + changed topic on 1 changes