comparison mercurial/dirstate.py @ 3156:b1f10d3223c1

dirstate: add copies function rename copies to copymap
author Matt Mackall <mpm@selenic.com>
date Mon, 25 Sep 2006 17:53:17 -0500
parents 882e703eaa94
children 53e843840349
comparison
equal deleted inserted replaced
3155:c82ea81d6850 3156:b1f10d3223c1
21 self.dirty = 0 21 self.dirty = 0
22 self.ui = ui 22 self.ui = ui
23 self.map = None 23 self.map = None
24 self.pl = None 24 self.pl = None
25 self.dirs = None 25 self.dirs = None
26 self.copies = {} 26 self.copymap = {}
27 self.ignorefunc = None 27 self.ignorefunc = None
28 self.blockignore = False 28 self.blockignore = False
29 29
30 def wjoin(self, f): 30 def wjoin(self, f):
31 return os.path.join(self.root, f) 31 return os.path.join(self.root, f)
158 def parse(self, st): 158 def parse(self, st):
159 self.pl = [st[:20], st[20: 40]] 159 self.pl = [st[:20], st[20: 40]]
160 160
161 # deref fields so they will be local in loop 161 # deref fields so they will be local in loop
162 map = self.map 162 map = self.map
163 copies = self.copies 163 copymap = self.copymap
164 format = self.format 164 format = self.format
165 unpack = struct.unpack 165 unpack = struct.unpack
166 166
167 pos = 40 167 pos = 40
168 e_size = struct.calcsize(format) 168 e_size = struct.calcsize(format)
174 pos = newpos 174 pos = newpos
175 newpos = pos + l 175 newpos = pos + l
176 f = st[pos:newpos] 176 f = st[pos:newpos]
177 if '\0' in f: 177 if '\0' in f:
178 f, c = f.split('\0') 178 f, c = f.split('\0')
179 copies[f] = c 179 copymap[f] = c
180 map[f] = e[:4] 180 map[f] = e[:4]
181 pos = newpos 181 pos = newpos
182 182
183 def read(self): 183 def read(self):
184 self.map = {} 184 self.map = {}
191 if err.errno != errno.ENOENT: raise 191 if err.errno != errno.ENOENT: raise
192 192
193 def copy(self, source, dest): 193 def copy(self, source, dest):
194 self.lazyread() 194 self.lazyread()
195 self.markdirty() 195 self.markdirty()
196 self.copies[dest] = source 196 self.copymap[dest] = source
197 197
198 def copied(self, file): 198 def copied(self, file):
199 return self.copies.get(file, None) 199 return self.copymap.get(file, None)
200
201 def copies(self):
202 return self.copymap
200 203
201 def initdirs(self): 204 def initdirs(self):
202 if self.dirs is None: 205 if self.dirs is None:
203 self.dirs = {} 206 self.dirs = {}
204 for f in self.map: 207 for f in self.map:
252 self.updatedirs(f, 1) 255 self.updatedirs(f, 1)
253 s = os.lstat(self.wjoin(f)) 256 s = os.lstat(self.wjoin(f))
254 st_size = kw.get('st_size', s.st_size) 257 st_size = kw.get('st_size', s.st_size)
255 st_mtime = kw.get('st_mtime', s.st_mtime) 258 st_mtime = kw.get('st_mtime', s.st_mtime)
256 self.map[f] = (state, s.st_mode, st_size, st_mtime) 259 self.map[f] = (state, s.st_mode, st_size, st_mtime)
257 if self.copies.has_key(f): 260 if self.copymap.has_key(f):
258 del self.copies[f] 261 del self.copymap[f]
259 262
260 def forget(self, files): 263 def forget(self, files):
261 if not files: return 264 if not files: return
262 self.lazyread() 265 self.lazyread()
263 self.markdirty() 266 self.markdirty()
270 self.ui.warn(_("not in dirstate: %s!\n") % f) 273 self.ui.warn(_("not in dirstate: %s!\n") % f)
271 pass 274 pass
272 275
273 def clear(self): 276 def clear(self):
274 self.map = {} 277 self.map = {}
275 self.copies = {} 278 self.copymap = {}
276 self.dirs = None 279 self.dirs = None
277 self.markdirty() 280 self.markdirty()
278 281
279 def rebuild(self, parent, files): 282 def rebuild(self, parent, files):
280 self.clear() 283 self.clear()