From patchwork Tue Mar 25 02:33:52 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [3,of,7] transaction: add onclose hook for pre-close logic From: Durham Goode X-Patchwork-Id: 4051 Message-Id: To: mercurial-devel@selenic.com Date: Mon, 24 Mar 2014 19:33:52 -0700 # HG changeset patch # User Durham Goode # 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() + self.count -= 1 if self.count != 0: return