tests/test-topic-flow-reject-untopiced.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Sun, 08 Sep 2019 11:56:11 +0200
changeset 4833 72cebe6642d7
parent 3280 e642bad8174a
child 4840 62b60fc1983d
permissions -rw-r--r--
stablesort: add some documentation for stablesort This should help people to understand what is going on here.

Testing the config option for rejecting draft changeset without topic
The config option is "experimental.topic-mode.server"

  $ . "$TESTDIR/testlib/topic_setup.sh"

Creating a server repo

  $ hg init server
  $ cd server
  $ cat <<EOF >>.hg/hgrc
  > [phases]
  > publish=False
  > [experimental]
  > topic-mode.server = enforce
  > EOF

  $ hg topic server
  marked working directory as topic: server
  $ for ch in a b c; do echo foo > $ch; hg ci -Aqm "Added "$ch; done
  $ hg ph -p 0

  $ hg log -G -T "{rev}:{node|short}\n{desc}  {topics}"
  @  2:a7b96f87a214
  |  Added c  server
  o  1:d6a8197e192a
  |  Added b  server
  o  0:49a3f206c9ae
     Added a

  $ cd ..

Creating a client repo

  $ hg clone server client
  updating to branch default
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ cd client
  $ hg up server
  switching to topic server
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg log -G -T "{rev}:{node|short}\n{desc}  {topics}"
  @  2:a7b96f87a214
  |  Added c  server
  o  1:d6a8197e192a
  |  Added b  server
  o  0:49a3f206c9ae
     Added a

  $ hg topic
   * server (2 changesets)

Create a changeset without topic

  $ hg topic --clear
  $ echo foo > d
  $ hg ci -Aqm "added d"

  $ hg log -G -T "{rev}:{node|short}\n{desc}  {topics}"
  @  3:4e8b0e0237c6
  |  added d
  o  2:a7b96f87a214
  |  Added c  server
  o  1:d6a8197e192a
  |  Added b  server
  o  0:49a3f206c9ae
     Added a

Push a draft changeset without topic

  $ hg push ../server  --new-branch
  pushing to ../server
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 1 changes to 1 files
  transaction abort!
  rollback completed
  abort: rejecting draft changesets: 4e8b0e0237
  [255]

  $ hg push ../server -f
  pushing to ../server
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 1 changes to 1 files
  transaction abort!
  rollback completed
  abort: rejecting draft changesets: 4e8b0e0237
  [255]

Grow the stack with more changesets having topic

  $ hg topic client
  marked working directory as topic: client
  $ for ch in e f g; do echo foo > $ch; hg ci -Aqm "Added "$ch; done;

  $ hg log -G -T "{rev}:{node|short}\n{desc}  {topics}"
  @  6:42c4ac86452a
  |  Added g  client
  o  5:3dc456efb491
  |  Added f  client
  o  4:18a516babc60
  |  Added e  client
  o  3:4e8b0e0237c6
  |  added d
  o  2:a7b96f87a214
  |  Added c  server
  o  1:d6a8197e192a
  |  Added b  server
  o  0:49a3f206c9ae
     Added a

Pushing multiple changeset with some having topics and some not

  $ hg push ../server --new-branch
  pushing to ../server
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 4 changesets with 4 changes to 4 files
  transaction abort!
  rollback completed
  abort: rejecting draft changesets: 4e8b0e0237
  [255]

Testing case when both experimental.topic-mode.server and
experimental.topic.publish-bare-branch are set

  $ cd ../server
  $ echo 'topic.publish-bare-branch=True' >> .hg/hgrc
  $ cd ../client
  $ hg push ../server --new-branch
  pushing to ../server
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 4 changesets with 4 changes to 4 files
  transaction abort!
  rollback completed
  abort: rejecting draft changesets: 4e8b0e0237
  [255]

Turning the changeset public and testing push

  $ hg phase -r 3 -p
  $ hg log -G -T "{rev}:{node|short}\n{desc}  {topics}"
  @  6:42c4ac86452a
  |  Added g  client
  o  5:3dc456efb491
  |  Added f  client
  o  4:18a516babc60
  |  Added e  client
  o  3:4e8b0e0237c6
  |  added d
  o  2:a7b96f87a214
  |  Added c
  o  1:d6a8197e192a
  |  Added b
  o  0:49a3f206c9ae
     Added a

  $ hg push ../server
  pushing to ../server
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 4 changesets with 4 changes to 4 files
  active topic 'server' is now empty