tests/test-topic-server.t
changeset 5139 19b8ffd23795
child 5150 e0c091b199bc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-topic-server.t	Wed Feb 19 01:35:23 2020 +0100
@@ -0,0 +1,179 @@
+  $ . "$TESTDIR/testlib/topic_setup.sh"
+
+  $ cat << EOF >> $HGRCPATH
+  > [experimental]
+  > evolution = all
+  > topic.publish-bare-branch = yes
+  > topic.server-gate-topic-changesets = yes
+  > 
+  > [extensions]
+  > evolve =
+  > 
+  > [phases]
+  > publish = no
+  > 
+  > [ui]
+  > ssh = "$PYTHON" "$RUNTESTDIR/dummyssh"
+  > EOF
+
+  $ hg init server
+  $ cd server
+
+  $ echo a > a
+  $ hg commit -qAm root
+  $ hg phase --public -r 'all()'
+
+  $ cd ..
+
+  $ hg clone ssh://user@dummy/server client-topic1
+  requesting all changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  new changesets 6569b5a81c7e
+  updating to branch default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg clone ssh://user@dummy/server client-topic2
+  requesting all changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  new changesets 6569b5a81c7e
+  updating to branch default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg version -v -R client-topic1
+  warning: --repository ignored
+  Mercurial Distributed SCM (*) (glob)
+  (see https://mercurial-scm.org for more information)
+  
+  Copyright (C) 2005-* Matt Mackall and others (glob)
+  This is free software; see the source for copying conditions. There is NO
+  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+  
+  Enabled extensions:
+  
+    rebase  internal  
+    topic   external  * (glob)
+    evolve  external  * (glob)
+  $ hg clone ssh://user@dummy/server client-plain
+  requesting all changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  new changesets 6569b5a81c7e
+  updating to branch default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ cat << EOF >> client-plain/.hg/hgrc
+  > [extensions]
+  > topic = !
+  > EOF
+  $ hg version -v -R client-plain
+  warning: --repository ignored
+  Mercurial Distributed SCM (*) (glob)
+  (see https://mercurial-scm.org for more information)
+  
+  Copyright (C) 2005-* Matt Mackall and others (glob)
+  This is free software; see the source for copying conditions. There is NO
+  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+  
+  Enabled extensions:
+  
+    rebase  internal  
+    evolve  external  * (glob)
+
+Make two commits, with and without a topic, and push them to the server
+
+  $ cd client-topic1
+  $ echo b > b
+  $ hg topic some-work
+  marked working directory as topic: some-work
+  $ hg commit -Am 'adding b (topic)'
+  adding b
+  active topic 'some-work' grew its first changeset
+  (see 'hg help topics' for more information)
+  $ hg up 0
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo c > c
+  $ hg commit -Am 'adding c (no topic)'
+  adding c
+  $ hg log -r 'all() - 0'
+  changeset:   1:2a2e8b3520f2
+  topic:       some-work
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     adding b (topic)
+  
+  changeset:   2:b46feb4d24f9
+  tag:         tip
+  parent:      0:6569b5a81c7e
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     adding c (no topic)
+  
+
+(disable the bare publishing to put a bare draft on the server)
+
+  $ cat << EOF >> ../server/.hg/hgrc
+  > [experimental]
+  > topic.publish-bare-branch = no
+  > EOF
+  $ hg push
+  pushing to ssh://user@dummy/server
+  searching for changes
+  remote: adding changesets
+  remote: adding manifests
+  remote: adding file changes
+  remote: added 2 changesets with 2 changes to 2 files (+1 heads)
+  $ cd ..
+  $ hg --cwd server phase -r 'tip'
+  2: draft
+
+Clients with topic can exchange draft changesets both with and without a topic through the server
+
+  $ hg --cwd client-topic2 pull
+  pulling from ssh://user@dummy/server
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 2 changes to 2 files (+1 heads)
+  new changesets 2a2e8b3520f2:b46feb4d24f9 (2 drafts)
+  (run 'hg heads' to see heads)
+  $ hg --cwd client-topic2 log -r 'all() - 0'
+  changeset:   1:2a2e8b3520f2
+  topic:       some-work
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     adding b (topic)
+  
+  changeset:   2:b46feb4d24f9
+  tag:         tip
+  parent:      0:6569b5a81c7e
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     adding c (no topic)
+  
+
+Client without topic only sees draft changesets if they don't have a topic
+
+  $ hg --cwd client-plain pull
+  pulling from ssh://user@dummy/server
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  new changesets b46feb4d24f9 (1 drafts)
+  (run 'hg update' to get a working copy)
+  $ hg --cwd client-plain phase -r 'all() - 0'
+  1: draft
+  $ hg --cwd client-plain log -r 'all() - 0'
+  changeset:   1:b46feb4d24f9
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     adding c (no topic)
+