##// END OF EJS Templates
transaction: add releasefn to notify the end of a transaction scope...
FUJIWARA Katsunori -
r26576:9e0aaac0 default
parent child Browse files
Show More
@@ -89,7 +89,7 b' def _playback(journal, report, opener, v'
89 89
90 90 class transaction(object):
91 91 def __init__(self, report, opener, vfsmap, journalname, undoname=None,
92 after=None, createmode=None, validator=None):
92 after=None, createmode=None, validator=None, releasefn=None):
93 93 """Begin a new transaction
94 94
95 95 Begins a new transaction that allows rolling back writes in the event of
@@ -97,6 +97,7 b' class transaction(object):'
97 97
98 98 * `after`: called after the transaction has been committed
99 99 * `createmode`: the mode of the journal file that will be created
100 * `releasefn`: called after releasing (with transaction and result)
100 101 """
101 102 self.count = 1
102 103 self.usages = 1
@@ -119,6 +120,11 b' class transaction(object):'
119 120 if validator is None:
120 121 validator = lambda tr: None
121 122 self.validator = validator
123 # A callback to do something just after releasing transaction.
124 if releasefn is None:
125 releasefn = lambda tr, success: None
126 self.releasefn = releasefn
127
122 128 # a dict of arguments to be passed to hooks
123 129 self.hookargs = {}
124 130 self.file = opener.open(self.journal, "w")
@@ -442,6 +448,9 b' class transaction(object):'
442 448 % (vfs.join(b), inst))
443 449 self._backupentries = []
444 450 self.journal = None
451
452 self.releasefn(self, True) # notify success of closing transaction
453
445 454 # run post close action
446 455 categories = sorted(self._postclosecallback)
447 456 for cat in categories:
@@ -506,7 +515,7 b' class transaction(object):'
506 515 self.report(_("rollback failed - please run hg recover\n"))
507 516 finally:
508 517 self.journal = None
509
518 self.releasefn(self, False) # notify failure of transaction
510 519
511 520 def rollback(opener, vfsmap, file, report):
512 521 """Rolls back the transaction contained in the given file
General Comments 0
You need to be logged in to leave comments. Login now