Mercurial > hg
changeset 49994:3128018e878b
transaction: run abort callback in all cases
Previously, these possibly important callback were "forgotten" when running a
quick rollback.
This is now fixed, as the tests shown.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 14 Feb 2023 20:04:17 +0100 |
parents | 2f348babe30d |
children | 27fd12eca557 |
files | mercurial/transaction.py tests/test-hook.t |
diffstat | 2 files changed, 15 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/transaction.py Tue Feb 14 18:59:04 2023 +0100 +++ b/mercurial/transaction.py Tue Feb 14 20:04:17 2023 +0100 @@ -670,6 +670,12 @@ quick = self._can_quick_abort(entries) try: + if not quick: + self._report(_(b"transaction abort!\n")) + for cat in sorted(self._abortcallback): + self._abortcallback[cat](self) + # Prevent double usage and help clear cycles. + self._abortcallback = None if quick: self._do_quick_abort(entries) else: @@ -699,12 +705,7 @@ def _do_full_abort(self, entries): """(Noisily) rollback all the change introduced by the transaction""" - self._report(_(b"transaction abort!\n")) try: - for cat in sorted(self._abortcallback): - self._abortcallback[cat](self) - # Prevent double usage and help clear cycles. - self._abortcallback = None _playback( self._journal, self._report,
--- a/tests/test-hook.t Tue Feb 14 18:59:04 2023 +0100 +++ b/tests/test-hook.t Tue Feb 14 20:04:17 2023 +0100 @@ -644,6 +644,15 @@ HG_TXNNAME=push HG_URL=file:$TESTTMP/a + txnabort Python hook: bundle2,changes,source,txnid,txnname,url + txnabort hook: HG_BUNDLE2=1 + HG_HOOKNAME=txnabort.1 + HG_HOOKTYPE=txnabort + HG_SOURCE=push + HG_TXNID=TXN:$ID$ + HG_TXNNAME=push + HG_URL=file:$TESTTMP/a + abort: prepushkey hook exited with status 1 [40] $ cd ../a