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