Mercurial > hg
diff tests/test-bookmarks.t @ 34709:c212947273a7
bookmark: add a dedicated pretxnclose-bookmark hook
This new hook mirror the newly introduced 'txnclose-bookmark' but can abort the
transaction.
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Sun, 08 Oct 2017 18:50:14 +0200 |
parents | ee5f0d047b41 |
children | aa05b95949fe |
line wrap: on
line diff
--- a/tests/test-bookmarks.t Tue Oct 10 17:53:42 2017 +0200 +++ b/tests/test-bookmarks.t Sun Oct 08 18:50:14 2017 +0200 @@ -1063,3 +1063,99 @@ rollback completed abort: pretxnclose hook exited with status 1 [255] + +Check pretxnclose-bookmark can abort a transaction +-------------------------------------------------- + +add hooks: + +* to prevent NEW bookmark on a non-public changeset +* to prevent non-forward move of NEW bookmark + + $ cat << EOF >> .hg/hgrc + > [hooks] + > pretxnclose-bookmark.force-public = (echo \$HG_BOOKMARK| grep -v NEW > /dev/null) || [ -z "\$HG_NODE" ] || (hg log -r "\$HG_NODE" -T '{phase}' | grep public > /dev/null) + > pretxnclose-bookmark.force-forward = (echo \$HG_BOOKMARK| grep -v NEW > /dev/null) || [ -z "\$HG_NODE" ] || (hg log -r "max(\$HG_OLDNODE::\$HG_NODE)" -T 'MATCH' | grep MATCH > /dev/null) + > EOF + + $ hg log -G -T phases + @ changeset: 6:81dcce76aa0b + | tag: tip + | phase: draft + | parent: 4:125c9a1d6df6 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: xx + | + | o changeset: 5:5fb12f0f2d51 + | | branch: test + | | bookmark: Z + | | phase: draft + | | parent: 3:9ba5f110a0b3 + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: yy + | | + o | changeset: 4:125c9a1d6df6 + | | bookmark: Y + | | bookmark: Z@2 + | | phase: public + | | parent: 2:db815d6d32e6 + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: x + | | + | o changeset: 3:9ba5f110a0b3 + |/ branch: test + | bookmark: foo + | bookmark: four + | phase: public + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: y + | + o changeset: 2:db815d6d32e6 + | bookmark: foo@2 + | bookmark: should-end-on-two + | bookmark: x y + | phase: public + | parent: 0:f7b1eb17ad24 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: 2 + | + | o changeset: 1:925d80f479bb + |/ bookmark: X2 + | bookmark: Z@1 + | phase: public + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: 1 + | + o changeset: 0:f7b1eb17ad24 + bookmark: foo@1 + phase: public + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: 0 + + +attempt to create on a default changeset + + $ hg bookmark -r 81dcce76aa0b NEW + transaction abort! + rollback completed + abort: pretxnclose-bookmark.force-public hook exited with status 1 + [255] + +create on a public changeset + + $ hg bookmark -r 9ba5f110a0b3 NEW + +move to the other branch + + $ hg bookmark -f -r 125c9a1d6df6 NEW + transaction abort! + rollback completed + abort: pretxnclose-bookmark.force-forward hook exited with status 1 + [255]