tests/test-topic-flow-reject-untopiced.t
author Anton Shestakov <av6@dwimlabs.net>
Sun, 05 May 2019 17:39:46 +0800
changeset 4650 7c05b1625921
parent 3280 e642bad8174a
child 4840 62b60fc1983d
permissions -rw-r--r--
stack: get stack data directly from stack and remove stackdata() stackdata function began its life in 137f8b04901e as a proto-stack: it computed stack revs on its own and only had one property to return, "changesetcount". Later it started to prepare and return more properties, but since b933a8068c17 it was computing revs using a getstack function. And then finally in 17749d9d3968 it started to rely on stack class entirely. It was a good function, but now, when all the logic it provided was factored into stack class, I'd say it's finally time for it to be put to rest.

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