##// END OF EJS Templates
transaction: add a validation stage...
Pierre-Yves David -
r24283:ef22cfff default
parent child Browse files
Show More
@@ -83,7 +83,7 b' def _playback(journal, report, opener, v'
83
83
84 class transaction(object):
84 class transaction(object):
85 def __init__(self, report, opener, vfsmap, journalname, undoname=None,
85 def __init__(self, report, opener, vfsmap, journalname, undoname=None,
86 after=None, createmode=None):
86 after=None, createmode=None, validator=None):
87 """Begin a new transaction
87 """Begin a new transaction
88
88
89 Begins a new transaction that allows rolling back writes in the event of
89 Begins a new transaction that allows rolling back writes in the event of
@@ -107,6 +107,12 b' class transaction(object):'
107 self.journal = journalname
107 self.journal = journalname
108 self.undoname = undoname
108 self.undoname = undoname
109 self._queue = []
109 self._queue = []
110 # A callback to validate transaction content before closing it.
111 # should raise exception is anything is wrong.
112 # target user is repository hooks.
113 if validator is None:
114 validator = lambda tr: None
115 self.validator = validator
110 # a dict of arguments to be passed to hooks
116 # a dict of arguments to be passed to hooks
111 self.hookargs = {}
117 self.hookargs = {}
112 self.file = opener.open(self.journal, "w")
118 self.file = opener.open(self.journal, "w")
@@ -378,6 +384,7 b' class transaction(object):'
378 def close(self):
384 def close(self):
379 '''commit the transaction'''
385 '''commit the transaction'''
380 if self.count == 1:
386 if self.count == 1:
387 self.validator(self) # will raise exception if needed
381 self._generatefiles()
388 self._generatefiles()
382 categories = sorted(self._finalizecallback)
389 categories = sorted(self._finalizecallback)
383 for cat in categories:
390 for cat in categories:
General Comments 0
You need to be logged in to leave comments. Login now