Comments
Patch
@@ -831,10 +831,14 @@ variables it is passed are listed with n
Run after any repository transaction has been commited. At this
point, the transaction can no longer be rolled back. The hook will run
after the lock is released. see ``pretxnclose`` docs for details about
available variables.
+``txnabort``
+ Run when a transaction is aborted. see ``pretxnclose`` docs for details about
+ available variables.
+
``pretxnchangegroup``
Run after a changegroup has been added via push, pull or unbundle,
but before the transaction has been committed. Changegroup is
visible to hook program. This lets you validate incoming changes
before accepting them. Passed the ID of the first new changeset in
@@ -973,10 +973,16 @@ class localrepository(object):
def hook():
reporef().hook('txnclose', throw=False, txnname=desc,
**tr2.hookargs)
reporef()._afterlock(hook)
tr.addfinalize('txnclose-hook', txnclosehook)
+ def txnaborthook(tr2):
+ """To be run if transaction is aborted
+ """
+ reporef().hook('txnabort', throw=False, txnname=desc,
+ **tr2.hookargs)
+ tr.addabort('txnabort-hook', txnaborthook)
self._transref = weakref.ref(tr)
return tr
def _journalfiles(self):
return ((self.svfs, 'journal'),
@@ -13,10 +13,11 @@ commit hooks can see env vars
> pre-cat = python "$TESTDIR/printenv.py" pre-cat
> post-cat = python "$TESTDIR/printenv.py" post-cat
> pretxnopen = sh -c "HG_LOCAL= HG_TAG= python \"$TESTDIR/printenv.py\" pretxnopen"
> pretxnclose = sh -c "HG_LOCAL= HG_TAG= python \"$TESTDIR/printenv.py\" pretxnclose"
> txnclose = sh -c "HG_LOCAL= HG_TAG= python \"$TESTDIR/printenv.py\" txnclose"
+ > txnabort = sh -c "HG_LOCAL= HG_TAG= python \"$TESTDIR/printenv.py\" txnabort"
> EOF
$ echo a > a
$ hg add a
$ hg commit -m a
precommit hook: HG_PARENT1=0000000000000000000000000000000000000000
@@ -159,10 +160,11 @@ more there after
pretxncommit hook: HG_NODE=6f611f8018c10e827fee6bd2bc807f937e761567 HG_PARENT1=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PENDING=$TESTTMP/a
5:6f611f8018c1
5:6f611f8018c1
pretxncommit.forbid hook: HG_NODE=6f611f8018c10e827fee6bd2bc807f937e761567 HG_PARENT1=539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10 HG_PENDING=$TESTTMP/a
transaction abort!
+ txnabort hook: HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
rollback completed
abort: pretxncommit.forbid1 hook exited with status 1
[255]
$ hg -q tip
4:539e4b31b6dc