##// END OF EJS Templates
Beginnings of transaction undo support
mpm@selenic.com -
r95:589f507b default
parent child Browse files
Show More
@@ -294,7 +294,8 b' class localrepository:'
294 294 return filelog(self.opener, f)
295 295
296 296 def transaction(self):
297 return transaction(self.opener, self.join("journal"))
297 return transaction(self.opener, self.join("journal"),
298 self.join("undo"))
298 299
299 300 def commit(self, parent, update = None, text = ""):
300 301 tr = self.transaction()
@@ -14,16 +14,16 b''
14 14 import os
15 15
16 16 class transaction:
17 def __init__(self, opener, journal):
17 def __init__(self, opener, journal, after = None):
18 18 self.opener = opener
19 self.after = after
19 20 self.entries = []
20 21 self.map = {}
21 22 self.journal = journal
22 23
23 24 # abort here if the journal already exists
24 25 if os.path.exists(self.journal):
25 print "journal already exists, recovering"
26 self.recover()
26 raise "journal already exists!"
27 27
28 28 self.file = open(self.journal, "w")
29 29
@@ -43,7 +43,10 b' class transaction:'
43 43 def close(self):
44 44 self.file.close()
45 45 self.entries = []
46 os.unlink(self.journal)
46 if self.after:
47 os.rename(self.journal, self.after)
48 else:
49 os.unlink(self.journal)
47 50
48 51 def abort(self):
49 52 if not self.entries: return
General Comments 0
You need to be logged in to leave comments. Login now