Mercurial > hg
changeset 24792:7d0421de8de3
hooks: add a 'txnabort' hook
This hook will be called whenever a transaction is aborted. This will make it
easy for people to clean up temporary content they may have created during a
transaction.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Thu, 16 Apr 2015 05:36:49 -0400 |
parents | 89c5881d692c |
children | 2ec894582ea2 |
files | mercurial/help/config.txt mercurial/localrepo.py tests/test-hook.t |
diffstat | 3 files changed, 12 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/help/config.txt Thu Apr 16 05:41:07 2015 -0400 +++ b/mercurial/help/config.txt Thu Apr 16 05:36:49 2015 -0400 @@ -833,6 +833,10 @@ 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
--- a/mercurial/localrepo.py Thu Apr 16 05:41:07 2015 -0400 +++ b/mercurial/localrepo.py Thu Apr 16 05:36:49 2015 -0400 @@ -975,6 +975,12 @@ **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
--- a/tests/test-hook.t Thu Apr 16 05:41:07 2015 -0400 +++ b/tests/test-hook.t Thu Apr 16 05:36:49 2015 -0400 @@ -15,6 +15,7 @@ > 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 @@ -161,6 +162,7 @@ 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]