--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-topic.t Wed May 20 21:23:28 2015 -0400
@@ -0,0 +1,357 @@
+ $ . "$TESTDIR/testlib"
+
+ $ hg init pinky
+ $ cd pinky
+ $ cat <<EOF >> .hg/hgrc
+ > [phases]
+ > publish=false
+ > EOF
+
+ $ hg help topics
+ hg topics
+
+ View current topic, set current topic, or see all topics.
+
+ options:
+
+ --clear clear active topic if any
+
+ (some details hidden, use --verbose to show complete help)
+ $ hg topics
+
+ $ 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
+
+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'
+ created new head
+ $ hg co narf
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg topic
+ fran
+ * 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
+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
+ 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 during merge.
+ merging alpha incomplete! (edit conflicts, 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 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 merge' to merge)
+ $ 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
+
+Move to fran, note that the topic activates, then deactivate the topic.
+
+ $ hg co fran
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg topics
+ * fran
+ $ hg topics --clear
+ $ echo fran? >> beta
+ $ hg ci -m 'fran?'
+ $ 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