##// END OF EJS Templates
hook: add a generic hook after transaction has been closed...
Pierre-Yves David -
r24282:db867981 default
parent child Browse files
Show More
@@ -813,6 +813,16 variables it is passed are listed with n
813 813 transaction will be in ``$HG_TXNNAME``. A non-zero status will
814 814 prevent the transaction from being opened.
815 815
816 ``txnclose``
817 Run after any repository transaction has been commited. At this
818 point, the transaction can no longer be rolled back. The hook will run
819 after the lock is released. The reason for the transaction will
820 be in ``$HG_TXNNAME``. The rest of the available data will vary
821 according the event that happened during the transaction. New changesets
822 will add ``$HG_NODE`` (id of the first added changeset), ``$HG_URL``
823 and ``$HG_SOURCE`` variables, bookmarks and phases changes will set
824 ``HG_BOOKMARK_MOVED`` and ``HG_PHASES_MOVED`` to ``1``, etc.
825
816 826 ``pretxnchangegroup``
817 827 Run after a changegroup has been added via push, pull or unbundle,
818 828 but before the transaction has been committed. Changegroup is
@@ -924,6 +924,16 class localrepository(object):
924 924 # outdated when running hooks. As fncache is used for streaming clone,
925 925 # this is not expected to break anything that happen during the hooks.
926 926 tr.addfinalize('flush-fncache', self.store.write)
927 # we must avoid cyclic reference between repo and transaction.
928 reporef = weakref.ref(self)
929 def txnclosehook(tr2):
930 """To be run if transaction is successful, will schedule a hook run
931 """
932 def hook():
933 reporef().hook('txnclose', throw=False, txnname=desc,
934 **tr2.hookargs)
935 reporef()._afterlock(hook)
936 tr.addfinalize('txnclose-hook', txnclosehook)
927 937 self._transref = weakref.ref(tr)
928 938 return tr
929 939
@@ -13,6 +13,7 commit hooks can see env vars
13 13 > pre-cat = python "$TESTDIR/printenv.py" pre-cat
14 14 > post-cat = python "$TESTDIR/printenv.py" post-cat
15 15 > pretxnopen = sh -c "HG_LOCAL= HG_TAG= python \"$TESTDIR/printenv.py\" pretxnopen"
16 > txnclose = sh -c "HG_LOCAL= HG_TAG= python \"$TESTDIR/printenv.py\" txnclose"
16 17 > EOF
17 18 $ echo a > a
18 19 $ hg add a
@@ -21,6 +22,7 commit hooks can see env vars
21 22 pretxnopen hook: HG_TXNNAME=commit
22 23 pretxncommit hook: HG_NODE=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PARENT1=0000000000000000000000000000000000000000 HG_PENDING=$TESTTMP/a
23 24 0:cb9a9f314b8b
25 txnclose hook: HG_PHASES_MOVED=1 HG_TXNNAME=commit
24 26 commit hook: HG_NODE=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PARENT1=0000000000000000000000000000000000000000
25 27 commit.b hook: HG_NODE=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PARENT1=0000000000000000000000000000000000000000
26 28
@@ -47,6 +49,7 pretxncommit and commit hooks can see bo
47 49 pretxnopen hook: HG_TXNNAME=commit
48 50 pretxncommit hook: HG_NODE=ab228980c14deea8b9555d91c9581127383e40fd HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PENDING=$TESTTMP/a
49 51 1:ab228980c14d
52 txnclose hook: HG_TXNNAME=commit
50 53 commit hook: HG_NODE=ab228980c14deea8b9555d91c9581127383e40fd HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b
51 54 commit.b hook: HG_NODE=ab228980c14deea8b9555d91c9581127383e40fd HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b
52 55 $ hg update -C 0
@@ -58,6 +61,7 pretxncommit and commit hooks can see bo
58 61 pretxnopen hook: HG_TXNNAME=commit
59 62 pretxncommit hook: HG_NODE=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b HG_PENDING=$TESTTMP/a
60 63 2:ee9deb46ab31
64 txnclose hook: HG_TXNNAME=commit
61 65 commit hook: HG_NODE=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b
62 66 commit.b hook: HG_NODE=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b
63 67 created new head
@@ -69,6 +73,7 pretxncommit and commit hooks can see bo
69 73 pretxnopen hook: HG_TXNNAME=commit
70 74 pretxncommit hook: HG_NODE=07f3376c1e655977439df2a814e3cc14b27abac2 HG_PARENT1=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT2=ab228980c14deea8b9555d91c9581127383e40fd HG_PENDING=$TESTTMP/a
71 75 3:07f3376c1e65
76 txnclose hook: HG_TXNNAME=commit
72 77 commit hook: HG_NODE=07f3376c1e655977439df2a814e3cc14b27abac2 HG_PARENT1=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT2=ab228980c14deea8b9555d91c9581127383e40fd
73 78 commit.b hook: HG_NODE=07f3376c1e655977439df2a814e3cc14b27abac2 HG_PARENT1=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 HG_PARENT2=ab228980c14deea8b9555d91c9581127383e40fd
74 79
@@ -112,6 +117,7 tag hooks can see env vars
112 117 pretxncommit hook: HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PARENT1=07f3376c1e655977439df2a814e3cc14b27abac2 HG_PENDING=$TESTTMP/a
113 118 4:539e4b31b6dc
114 119 tag hook: HG_LOCAL=0 HG_NODE=07f3376c1e655977439df2a814e3cc14b27abac2 HG_TAG=a
120 txnclose hook: HG_TXNNAME=commit
115 121 commit hook: HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PARENT1=07f3376c1e655977439df2a814e3cc14b27abac2
116 122 commit.b hook: HG_NODE=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PARENT1=07f3376c1e655977439df2a814e3cc14b27abac2
117 123 $ hg tag -l la
@@ -206,6 +212,7 pushkey hook
206 212 searching for changes
207 213 no changes found
208 214 pretxnopen hook: HG_TXNNAME=bookmarks
215 txnclose hook: HG_BOOKMARK_MOVED=1 HG_TXNNAME=bookmarks
209 216 pushkey hook: HG_KEY=foo HG_NAMESPACE=bookmarks HG_NEW=0000000000000000000000000000000000000000 HG_RET=1
210 217 exporting bookmark foo
211 218 [1]
General Comments 0
You need to be logged in to leave comments. Login now