[PATCH 3 of 7] transaction: add onclose hook for pre-close logic
David Soria Parra
davidsp at fb.com
Wed Mar 26 01:23:34 UTC 2014
Durham Goode <durham at fb.com> writes:
> # HG changeset patch
> # User Durham Goode <durham at fb.com>
> # Date 1395701867 25200
> # Mon Mar 24 15:57:47 2014 -0700
> # Node ID c84f51f8f92e0a3db4888ac9739f43fd866cac20
> # Parent 08595987c5b0e8af5aa8fec4debd7260f5a79e8f
> transaction: add onclose hook for pre-close logic
>
> Adds an optional onclose parameter to transactions that gets called just before
> the transaction is committed. This allows things that build up data over the
> course of the transaction (like the fncache) to commit their data.
>
> diff --git a/mercurial/transaction.py b/mercurial/transaction.py
> --- a/mercurial/transaction.py
> +++ b/mercurial/transaction.py
> @@ -42,12 +42,14 @@
> opener.unlink(journal)
>
> class transaction(object):
> - def __init__(self, report, opener, journal, after=None, createmode=None):
> + def __init__(self, report, opener, journal, after=None, createmode=None,
> + onclose=None):
> self.count = 1
> self.usages = 1
> self.report = report
> self.opener = opener
> self.after = after
> + self.onclose = onclose
> self.entries = []
> self.map = {}
> self.journal = journal
> @@ -126,6 +128,9 @@
> @active
> def close(self):
> '''commit the transaction'''
> + if self.count == 1 and self.onclose:
> + self.onclose()
> +
I think we can do a
if self.onclose:
self.onclose()
just after
self.count -= 1
if self.count != 0:
return
so together with the rest of the actions done
the last reference is closed.
More information about the Mercurial-devel
mailing list