equal
deleted
inserted
replaced
13 |
13 |
14 import os |
14 import os |
15 |
15 |
16 class transaction: |
16 class transaction: |
17 def __init__(self, opener, journal, after = None): |
17 def __init__(self, opener, journal, after = None): |
|
18 self.journal = None |
|
19 |
|
20 # abort here if the journal already exists |
|
21 if os.path.exists(journal): |
|
22 raise "journal already exists - run hg recover" |
|
23 |
18 self.opener = opener |
24 self.opener = opener |
19 self.after = after |
25 self.after = after |
20 self.entries = [] |
26 self.entries = [] |
21 self.map = {} |
27 self.map = {} |
22 self.journal = journal |
28 self.journal = journal |
23 |
|
24 # abort here if the journal already exists |
|
25 if os.path.exists(self.journal): |
|
26 raise "journal already exists!" |
|
27 |
29 |
28 self.file = open(self.journal, "w") |
30 self.file = open(self.journal, "w") |
29 |
31 |
30 def __del__(self): |
32 def __del__(self): |
31 if self.entries: self.abort() |
33 if self.entries: self.abort() |
61 |
63 |
62 self.entries = [] |
64 self.entries = [] |
63 |
65 |
64 print "rollback completed" |
66 print "rollback completed" |
65 |
67 |
66 def recover(self): |
68 def rollback(opener, file): |
67 for l in open(self.journal).readlines(): |
69 for l in open(file).readlines(): |
68 f, o = l.split('\0') |
70 f, o = l.split('\0') |
69 self.opener(f, "a").truncate(int(o)) |
71 opener(f, "a").truncate(int(o)) |
70 os.unlink(self.journal) |
72 os.unlink(file) |
71 |
73 |