Mercurial > evolve
view tests/test-topic-flow-publish-bare.t @ 5799:fe9f9e528a42
tests: make test-check-sdist.t less flaky by first archiving the repo
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Thu, 18 Feb 2021 07:39:38 +0800 |
parents | af9f40236037 |
children | 1bb465fad209 0b7328d7503a |
line wrap: on
line source
===================== Test workflow options ===================== $ . "$TESTDIR/testlib/topic_setup.sh" $ . "$TESTDIR/testlib/common.sh" Publishing of bare branch ========================= $ hg init bare-branch-server $ cd bare-branch-server $ cat <<EOF >> .hg/hgrc > [phases] > publish = no > [experimental] > topic.publish-bare-branch = yes > EOF $ mkcommit ROOT $ mkcommit c_dA0 $ hg phase --public -r 'all()' $ cd .. $ hg clone bare-branch-server bare-client updating to branch default 2 files updated, 0 files merged, 0 files removed, 0 files unresolved pushing a simple branch publish it ---------------------------------- $ cd bare-client $ mkcommit c_dB0 $ hg push pushing to $TESTTMP/bare-branch-server searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files $ hg log --rev 'sort(all(), "topo")' -GT '{rev}:{node|short} {desc} {phase} {branch} {topics}' @ 2:286d02a6e2a2 c_dB0 public default | o 1:134bc3852ad2 c_dA0 public default | o 0:ea207398892e ROOT public default pushing two heads at the same time ---------------------------------- $ hg update 'desc("c_dA0")' 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ mkcommit c_dC0 created new head (consider using topic for lightweight branches. See 'hg help topic') $ hg update 'desc("c_dA0")' 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ mkcommit c_dD0 created new head (consider using topic for lightweight branches. See 'hg help topic') $ hg push -f pushing to $TESTTMP/bare-branch-server searching for changes adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 2 files (+2 heads) $ hg log --rev 'sort(all(), "topo")' -GT '{rev}:{node|short} {desc} {phase} {branch} {topics}' @ 4:9bf953aa81f6 c_dD0 public default | | o 3:9d5b8e1f08a4 c_dC0 public default |/ | o 2:286d02a6e2a2 c_dB0 public default |/ o 1:134bc3852ad2 c_dA0 public default | o 0:ea207398892e ROOT public default pushing something not on default -------------------------------- $ hg update 'desc("ROOT")' 0 files updated, 0 files merged, 2 files removed, 0 files unresolved $ hg branch branchA marked working directory as branch branchA (branches are permanent and global, did you want a bookmark?) $ mkcommit c_aE0 $ hg push --new-branch pushing to $TESTTMP/bare-branch-server searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) $ hg log --rev 'sort(all(), "topo")' -GT '{rev}:{node|short} {desc} {phase} {branch} {topics}' @ 5:0db08e758601 c_aE0 public branchA | | o 4:9bf953aa81f6 c_dD0 public default | | | | o 3:9d5b8e1f08a4 c_dC0 public default | |/ | | o 2:286d02a6e2a2 c_dB0 public default | |/ | o 1:134bc3852ad2 c_dA0 public default |/ o 0:ea207398892e ROOT public default pushing topic ------------- $ hg update 'desc("c_dD0")' 2 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg topic foo marked working directory as topic: foo $ mkcommit c_dF0 active topic 'foo' grew its first changeset (see 'hg help topics' for more information) $ hg push pushing to $TESTTMP/bare-branch-server searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files $ hg log --rev 'sort(all(), "topo")' -GT '{rev}:{node|short} {desc} {phase} {branch} {topics}' @ 6:0867c4471796 c_dF0 draft default foo | o 4:9bf953aa81f6 c_dD0 public default | | o 3:9d5b8e1f08a4 c_dC0 public default |/ | o 2:286d02a6e2a2 c_dB0 public default |/ o 1:134bc3852ad2 c_dA0 public default | | o 5:0db08e758601 c_aE0 public branchA |/ o 0:ea207398892e ROOT public default pushing topic over a bare branch -------------------------------- $ hg update 'desc("c_dC0")' 1 files updated, 0 files merged, 2 files removed, 0 files unresolved $ mkcommit c_dG0 $ hg topic bar marked working directory as topic: bar $ mkcommit c_dH0 active topic 'bar' grew its first changeset (see 'hg help topics' for more information) $ hg push pushing to $TESTTMP/bare-branch-server searching for changes adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 2 files $ hg log --rev 'sort(all(), "topo")' -GT '{rev}:{node|short} {desc} {phase} {branch} {topics}' @ 8:858be9a8daaf c_dH0 draft default bar | o 7:0e4041d324d0 c_dG0 public default | o 3:9d5b8e1f08a4 c_dC0 public default | | o 2:286d02a6e2a2 c_dB0 public default |/ | o 6:0867c4471796 c_dF0 draft default foo | | | o 4:9bf953aa81f6 c_dD0 public default |/ o 1:134bc3852ad2 c_dA0 public default | | o 5:0db08e758601 c_aE0 public branchA |/ o 0:ea207398892e ROOT public default Pushing topic in between bare branch ------------------------------------ $ hg update 'desc("c_dB0")' 1 files updated, 0 files merged, 3 files removed, 0 files unresolved $ mkcommit c_dI0 $ hg update 'desc("c_dH0")' switching to topic bar 3 files updated, 0 files merged, 2 files removed, 0 files unresolved $ mkcommit c_dJ0 $ hg update 'desc("c_aE0")' 1 files updated, 0 files merged, 5 files removed, 0 files unresolved $ mkcommit c_aK0 $ hg push pushing to $TESTTMP/bare-branch-server searching for changes adding changesets adding manifests adding file changes added 3 changesets with 3 changes to 3 files $ hg log --rev 'sort(all(), "topo")' -GT '{rev}:{node|short} {desc} {phase} {branch} {topics}' @ 11:b0a00ebdfd24 c_aK0 public branchA | o 5:0db08e758601 c_aE0 public branchA | | o 10:abb5c84eb9e9 c_dJ0 draft default bar | | | o 8:858be9a8daaf c_dH0 draft default bar | | | o 7:0e4041d324d0 c_dG0 public default | | | o 3:9d5b8e1f08a4 c_dC0 public default | | | | o 9:4b5570d89f0f c_dI0 public default | | | | | o 2:286d02a6e2a2 c_dB0 public default | |/ | | o 6:0867c4471796 c_dF0 draft default foo | | | | | o 4:9bf953aa81f6 c_dD0 public default | |/ | o 1:134bc3852ad2 c_dA0 public default |/ o 0:ea207398892e ROOT public default merging a topic in branch ------------------------- $ hg update default 3 files updated, 0 files merged, 2 files removed, 0 files unresolved $ hg merge foo 2 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg ci -m 'c_dL0' $ hg push pushing to $TESTTMP/bare-branch-server searching for changes adding changesets adding manifests adding file changes added 1 changesets with 0 changes to 0 files (-1 heads) $ hg log --rev 'sort(all(), "topo")' -GT '{rev}:{node|short} {desc} {phase} {branch} {topics}' @ 12:a6f9f8c6c6cc c_dL0 public default |\ | o 9:4b5570d89f0f c_dI0 public default | | o | 6:0867c4471796 c_dF0 public default | | o | 4:9bf953aa81f6 c_dD0 public default | | | | o 10:abb5c84eb9e9 c_dJ0 draft default bar | | | | | o 8:858be9a8daaf c_dH0 draft default bar | | | | | o 7:0e4041d324d0 c_dG0 public default | | | +---o 3:9d5b8e1f08a4 c_dC0 public default | | | o 2:286d02a6e2a2 c_dB0 public default |/ o 1:134bc3852ad2 c_dA0 public default | | o 11:b0a00ebdfd24 c_aK0 public branchA | | | o 5:0db08e758601 c_aE0 public branchA |/ o 0:ea207398892e ROOT public default $ hg log -R ../bare-branch-server --rev 'sort(all(), "topo")' -GT '{rev}:{node|short} {desc} {phase} {branch} {topics}' o 12:a6f9f8c6c6cc c_dL0 public default |\ | o 9:4b5570d89f0f c_dI0 public default | | o | 6:0867c4471796 c_dF0 public default | | o | 4:9bf953aa81f6 c_dD0 public default | | | | o 10:abb5c84eb9e9 c_dJ0 draft default bar | | | | | o 8:858be9a8daaf c_dH0 draft default bar | | | | | o 7:0e4041d324d0 c_dG0 public default | | | +---o 3:9d5b8e1f08a4 c_dC0 public default | | | o 2:286d02a6e2a2 c_dB0 public default |/ @ 1:134bc3852ad2 c_dA0 public default | | o 11:b0a00ebdfd24 c_aK0 public branchA | | | o 5:0db08e758601 c_aE0 public branchA |/ o 0:ea207398892e ROOT public default Checking the option to prevent publishing ========================================= Alone the option is a bit too restrictive to be useful. However combined with other tooling or extensions is can become an important permission tool. $ hg log -r 'draft()' changeset: 8:858be9a8daaf topic: bar user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: c_dH0 changeset: 10:abb5c84eb9e9 topic: bar parent: 8:858be9a8daaf user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: c_dJ0 $ hg phase --public -r 8 --config experimental.topic.allow-publish=no abort: rejecting publishing of changeset 858be9a8daaf [255] $ hg phase --public -r 10 --config experimental.topic.allow-publish=no abort: rejecting publishing of changeset 858be9a8daaf and 1 others [255] Checking the option to prevent automatic publishing =================================================== $ hg up branchA 2 files updated, 0 files merged, 5 files removed, 0 files unresolved Trying to push changeset without topic (would publish them) $ mkcommit c_aM0 $ hg debugcapabilities $TESTTMP/bare-branch-server | grep topics ext-topics-publish=auto topics $ hg push --config experimental.auto-publish=abort -r . pushing to $TESTTMP/bare-branch-server abort: push would publish 1 changesets (use --publish or adjust 'experimental.auto-publish' config) [255] $ hg push --config experimental.auto-publish=abort -r . --publish pushing to $TESTTMP/bare-branch-server searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files Pushing a changeset with topic (not publishing, no warning) $ hg topic test-push-protection marked working directory as topic: test-push-protection $ mkcommit c_aL0 active topic 'test-push-protection' grew its first changeset (see 'hg help topics' for more information) $ hg push --config experimental.auto-publish=abort -r . pushing to $TESTTMP/bare-branch-server searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files