comparison mercurial/dirstate.py @ 4965:4106dde15aed

Merge with crew
author Matt Mackall <mpm@selenic.com>
date Sat, 21 Jul 2007 16:44:38 -0500
parents 8b6efc8fc23c 6b3ed43f77ba
children 46facb73ba8b
comparison
equal deleted inserted replaced
4964:ee983d0dbea8 4965:4106dde15aed
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 = False 23 self._dirty = False
24 self._dirtypl = False
24 self._ui = ui 25 self._ui = ui
25 26
26 def __getattr__(self, name): 27 def __getattr__(self, name):
27 if name == '_map': 28 if name == '_map':
28 self._read() 29 self._read()
111 112
112 def branch(self): 113 def branch(self):
113 return self._branch 114 return self._branch
114 115
115 def setparents(self, p1, p2=nullid): 116 def setparents(self, p1, p2=nullid):
116 self._dirty = True 117 self._dirty = self._dirtypl = True
117 self._pl = p1, p2 118 self._pl = p1, p2
118 119
119 def setbranch(self, branch): 120 def setbranch(self, branch):
120 self._branch = branch 121 self._branch = branch
121 self._opener("branch", "w").write(branch + '\n') 122 self._opener("branch", "w").write(branch + '\n')
122 123
123 def _read(self): 124 def _read(self):
124 self._map = {} 125 self._map = {}
125 self._copymap = {} 126 self._copymap = {}
126 self._pl = [nullid, nullid] 127 if not self._dirtypl:
128 self._pl = [nullid, nullid]
127 try: 129 try:
128 st = self._opener("dirstate").read() 130 st = self._opener("dirstate").read()
129 except IOError, err: 131 except IOError, err:
130 if err.errno != errno.ENOENT: raise 132 if err.errno != errno.ENOENT: raise
131 return 133 return
132 if not st: 134 if not st:
133 return 135 return
134 136
135 self._pl = [st[:20], st[20: 40]] 137 if not self._dirtypl:
138 self._pl = [st[:20], st[20: 40]]
136 139
137 # deref fields so they will be local in loop 140 # deref fields so they will be local in loop
138 dmap = self._map 141 dmap = self._map
139 copymap = self._copymap 142 copymap = self._copymap
140 unpack = struct.unpack 143 unpack = struct.unpack
155 dmap[f] = e[:4] 158 dmap[f] = e[:4]
156 pos = newpos 159 pos = newpos
157 160
158 def invalidate(self): 161 def invalidate(self):
159 for a in "_map _copymap _branch _pl _dirs _ignore".split(): 162 for a in "_map _copymap _branch _pl _dirs _ignore".split():
160 if hasattr(self, a): 163 if a in self.__dict__:
161 self.__delattr__(a) 164 delattr(self, a)
162 self._dirty = False 165 self._dirty = False
163 166
164 def copy(self, source, dest): 167 def copy(self, source, dest):
165 self._dirty = True 168 self._dirty = True
166 self._copymap[dest] = source 169 self._copymap[dest] = source
269 cs.write(e) 272 cs.write(e)
270 cs.write(f) 273 cs.write(f)
271 st = self._opener("dirstate", "w", atomictemp=True) 274 st = self._opener("dirstate", "w", atomictemp=True)
272 st.write(cs.getvalue()) 275 st.write(cs.getvalue())
273 st.rename() 276 st.rename()
274 self._dirty = False 277 self._dirty = self._dirtypl = False
275 278
276 def _filter(self, files): 279 def _filter(self, files):
277 ret = {} 280 ret = {}
278 unknown = [] 281 unknown = []
279 282