Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/dirstate.py @ 1755:a8f7791e3680
add 'debugrebuildstate' to rebuild the dirstate from a given revision
- added and removed files will be lost while recreating the dirstate
- modifications are not lost
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Mon, 20 Feb 2006 19:04:56 +0100 |
parents | d457fec76ab0 |
children | 98b6c1cad58b |
comparison
equal
deleted
inserted
replaced
1754:fdfe89a3962d | 1755:a8f7791e3680 |
---|---|
195 self.ui.warn(_("not in dirstate: %s!\n") % f) | 195 self.ui.warn(_("not in dirstate: %s!\n") % f) |
196 pass | 196 pass |
197 | 197 |
198 def clear(self): | 198 def clear(self): |
199 self.map = {} | 199 self.map = {} |
200 self.copies = {} | |
201 self.markdirty() | |
202 | |
203 def rebuild(self, parent, files): | |
204 self.clear() | |
205 umask = os.umask(0) | |
206 os.umask(umask) | |
207 for f, mode in files: | |
208 if mode: | |
209 self.map[f] = ('n', ~umask, -1, 0) | |
210 else: | |
211 self.map[f] = ('n', ~umask & 0666, -1, 0) | |
212 self.pl = (parent, nullid) | |
200 self.markdirty() | 213 self.markdirty() |
201 | 214 |
202 def write(self): | 215 def write(self): |
203 st = self.opener("dirstate", "w", atomic=True) | 216 st = self.opener("dirstate", "w", atomic=True) |
204 st.write("".join(self.pl)) | 217 st.write("".join(self.pl)) |
404 continue | 417 continue |
405 # check the common case first | 418 # check the common case first |
406 if type_ == 'n': | 419 if type_ == 'n': |
407 if not st: | 420 if not st: |
408 st = os.stat(fn) | 421 st = os.stat(fn) |
409 if size != st.st_size or (mode ^ st.st_mode) & 0100: | 422 if size >= 0 and (size != st.st_size |
423 or (mode ^ st.st_mode) & 0100): | |
410 modified.append(fn) | 424 modified.append(fn) |
411 elif time != st.st_mtime: | 425 elif time != st.st_mtime: |
412 lookup.append(fn) | 426 lookup.append(fn) |
413 elif type_ == 'm': | 427 elif type_ == 'm': |
414 modified.append(fn) | 428 modified.append(fn) |