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