changeset 23282:6c1351352b6c

transaction: pass the transaction to 'postclose' callback This mirrors the API for 'pending' and 'finalize' callbacks. I do not have immediate usage planned for it, but I'm sure some callback will be happy to access transaction related data.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Sat, 08 Nov 2014 16:35:15 +0000
parents f60ed8cf4afc
children b04263c38a92
files mercurial/changegroup.py mercurial/exchange.py mercurial/transaction.py
diffstat 3 files changed, 6 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/changegroup.py	Sat Nov 08 16:31:38 2014 +0000
+++ b/mercurial/changegroup.py	Sat Nov 08 16:35:15 2014 +0000
@@ -816,7 +816,7 @@
                             ', '.join([hex(c[:6]) for c in newheads]))
 
             tr.addpostclose('changegroup-runhooks-%020i' % clstart,
-                            lambda: repo._afterlock(runhooks))
+                            lambda tr: repo._afterlock(runhooks))
 
         tr.close()
 
--- a/mercurial/exchange.py	Sat Nov 08 16:31:38 2014 +0000
+++ b/mercurial/exchange.py	Sat Nov 08 16:35:15 2014 +0000
@@ -861,7 +861,7 @@
             def runhooks():
                 repo.hook('b2x-transactionclose', **hookargs)
             self._tr.addpostclose('b2x-hook-transactionclose',
-                                  lambda: repo._afterlock(runhooks))
+                                  lambda tr: repo._afterlock(runhooks))
             self._tr.close()
 
     def releasetransaction(self):
@@ -1286,7 +1286,7 @@
                 def runhooks():
                     repo.hook('b2x-transactionclose', **hookargs)
                 tr.addpostclose('b2x-hook-transactionclose',
-                                lambda: repo._afterlock(runhooks))
+                                lambda tr: repo._afterlock(runhooks))
                 tr.close()
             except Exception, exc:
                 exc.duringunbundle2 = True
--- a/mercurial/transaction.py	Sat Nov 08 16:31:38 2014 +0000
+++ b/mercurial/transaction.py	Sat Nov 08 16:35:15 2014 +0000
@@ -315,6 +315,8 @@
     def addpostclose(self, category, callback):
         """add a callback to be called after the transaction is closed
 
+        The transaction will be given as callback's first argument.
+
         Category is a unique identifier to allow overwriting an old callback
         with a newer callback.
         """
@@ -350,7 +352,7 @@
         # run post close action
         categories = sorted(self._postclosecallback)
         for cat in categories:
-            self._postclosecallback[cat]()
+            self._postclosecallback[cat](self)
 
     @active
     def abort(self):