equal
deleted
inserted
replaced
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() |