comparison mercurial/dirstate.py @ 4903:81078e177266

dirstate: use True and false for _dirty
author Matt Mackall <mpm@selenic.com>
date Sat, 21 Jul 2007 16:02:09 -0500
parents de8ec7e1753a
children 6fd953d5faea
comparison
equal deleted inserted replaced
4902:5cbdea5735f4 4903:81078e177266
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 = False
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()
107 return self._pl 107 return self._pl
108 108
109 def branch(self): 109 def branch(self):
110 return self._branch 110 return self._branch
111 111
112 def markdirty(self):
113 self._dirty = 1
114
115 def setparents(self, p1, p2=nullid): 112 def setparents(self, p1, p2=nullid):
116 self.markdirty() 113 self._dirty = True
117 self._pl = p1, p2 114 self._pl = p1, p2
118 115
119 def setbranch(self, branch): 116 def setbranch(self, branch):
120 self._branch = branch 117 self._branch = branch
121 self._opener("branch", "w").write(branch + '\n') 118 self._opener("branch", "w").write(branch + '\n')
160 157
161 def invalidate(self): 158 def invalidate(self):
162 for a in "_map _copymap _branch _pl _dirs _ignore".split(): 159 for a in "_map _copymap _branch _pl _dirs _ignore".split():
163 if hasattr(self, a): 160 if hasattr(self, a):
164 self.__delattr__(a) 161 self.__delattr__(a)
165 self._dirty = 0 162 self._dirty = False
166 163
167 def copy(self, source, dest): 164 def copy(self, source, dest):
168 self.markdirty() 165 self._dirty = True
169 self._copymap[dest] = source 166 self._copymap[dest] = source
170 167
171 def copied(self, file): 168 def copied(self, file):
172 return self._copymap.get(file, None) 169 return self._copymap.get(file, None)
173 170
206 m needs merging 203 m needs merging
207 r marked for removal 204 r marked for removal
208 a marked for addition''' 205 a marked for addition'''
209 206
210 if not files: return 207 if not files: return
211 self.markdirty() 208 self._dirty = True
212 for f in files: 209 for f in files:
213 if self._copymap.has_key(f): 210 if self._copymap.has_key(f):
214 del self._copymap[f] 211 del self._copymap[f]
215 212
216 if state == "r": 213 if state == "r":
225 st_mtime = kw.get('st_mtime', s.st_mtime) 222 st_mtime = kw.get('st_mtime', s.st_mtime)
226 self._map[f] = (state, s.st_mode, st_size, st_mtime) 223 self._map[f] = (state, s.st_mode, st_size, st_mtime)
227 224
228 def forget(self, files): 225 def forget(self, files):
229 if not files: return 226 if not files: return
230 self.markdirty() 227 self._dirty = True
231 for f in files: 228 for f in files:
232 try: 229 try:
233 del self._map[f] 230 del self._map[f]
234 self._decpath(f) 231 self._decpath(f)
235 except KeyError: 232 except KeyError:
242 if files.execf(f): 239 if files.execf(f):
243 self._map[f] = ('n', 0777, -1, 0) 240 self._map[f] = ('n', 0777, -1, 0)
244 else: 241 else:
245 self._map[f] = ('n', 0666, -1, 0) 242 self._map[f] = ('n', 0666, -1, 0)
246 self._pl = (parent, nullid) 243 self._pl = (parent, nullid)
247 self.markdirty() 244 self._dirty = True
248 245
249 def write(self): 246 def write(self):
250 if not self._dirty: 247 if not self._dirty:
251 return 248 return
252 cs = cStringIO.StringIO() 249 cs = cStringIO.StringIO()
259 cs.write(e) 256 cs.write(e)
260 cs.write(f) 257 cs.write(f)
261 st = self._opener("dirstate", "w", atomictemp=True) 258 st = self._opener("dirstate", "w", atomictemp=True)
262 st.write(cs.getvalue()) 259 st.write(cs.getvalue())
263 st.rename() 260 st.rename()
264 self._dirty = 0 261 self._dirty = False
265 262
266 def filterfiles(self, files): 263 def filterfiles(self, files):
267 ret = {} 264 ret = {}
268 unknown = [] 265 unknown = []
269 266