tests/test-topic.t
changeset 1839 1bc5e62fc0c7
child 1843 0ba067a97d06
--- /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