Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/dirstate.py @ 4613:17ee7407097f
dirstate: simplify dirty handling
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 18 Jun 2007 13:24:34 -0500 |
parents | 86e5500a517e |
children | 3a645af7fb76 |
comparison
equal
deleted
inserted
replaced
4612:86e5500a517e | 4613:17ee7407097f |
---|---|
18 class dirstate(object): | 18 class dirstate(object): |
19 | 19 |
20 def __init__(self, opener, ui, root): | 20 def __init__(self, opener, ui, root): |
21 self.opener = opener | 21 self.opener = opener |
22 self.root = root | 22 self.root = root |
23 self.dirty = 0 | 23 self._dirty = 0 |
24 self.ui = ui | 24 self.ui = ui |
25 | 25 |
26 def __getattr__(self, name): | 26 def __getattr__(self, name): |
27 if name == 'map': | 27 if name == 'map': |
28 self.read() | 28 self.read() |
84 if self._slash: | 84 if self._slash: |
85 return path.replace(os.sep, '/') | 85 return path.replace(os.sep, '/') |
86 return path | 86 return path |
87 | 87 |
88 def __del__(self): | 88 def __del__(self): |
89 if self.dirty: | 89 self.write() |
90 self.write() | |
91 | 90 |
92 def __getitem__(self, key): | 91 def __getitem__(self, key): |
93 return self.map[key] | 92 return self.map[key] |
94 | 93 |
95 def __contains__(self, key): | 94 def __contains__(self, key): |
100 | 99 |
101 def branch(self): | 100 def branch(self): |
102 return self._branch | 101 return self._branch |
103 | 102 |
104 def markdirty(self): | 103 def markdirty(self): |
105 if not self.dirty: | 104 self._dirty = 1 |
106 self.dirty = 1 | |
107 | 105 |
108 def setparents(self, p1, p2=nullid): | 106 def setparents(self, p1, p2=nullid): |
109 self.markdirty() | 107 self.markdirty() |
110 self.pl = p1, p2 | 108 self.pl = p1, p2 |
111 | 109 |
238 self.map[f] = ('n', 0666, -1, 0) | 236 self.map[f] = ('n', 0666, -1, 0) |
239 self.pl = (parent, nullid) | 237 self.pl = (parent, nullid) |
240 self.markdirty() | 238 self.markdirty() |
241 | 239 |
242 def write(self): | 240 def write(self): |
243 if not self.dirty: | 241 if not self._dirty: |
244 return | 242 return |
245 cs = cStringIO.StringIO() | 243 cs = cStringIO.StringIO() |
246 cs.write("".join(self.pl)) | 244 cs.write("".join(self.pl)) |
247 for f, e in self.map.iteritems(): | 245 for f, e in self.map.iteritems(): |
248 c = self.copied(f) | 246 c = self.copied(f) |
252 cs.write(e) | 250 cs.write(e) |
253 cs.write(f) | 251 cs.write(f) |
254 st = self.opener("dirstate", "w", atomictemp=True) | 252 st = self.opener("dirstate", "w", atomictemp=True) |
255 st.write(cs.getvalue()) | 253 st.write(cs.getvalue()) |
256 st.rename() | 254 st.rename() |
257 self.dirty = 0 | 255 self._dirty = 0 |
258 | 256 |
259 def filterfiles(self, files): | 257 def filterfiles(self, files): |
260 ret = {} | 258 ret = {} |
261 unknown = [] | 259 unknown = [] |
262 | 260 |