equal
deleted
inserted
replaced
9 |
9 |
10 import struct, os |
10 import struct, os |
11 from node import * |
11 from node import * |
12 from i18n import gettext as _ |
12 from i18n import gettext as _ |
13 from demandload import * |
13 from demandload import * |
14 demandload(globals(), "time bisect stat util re") |
14 demandload(globals(), "time bisect stat util re errno") |
15 |
15 |
16 class dirstate: |
16 class dirstate: |
17 def __init__(self, opener, ui, root): |
17 def __init__(self, opener, ui, root): |
18 self.opener = opener |
18 self.opener = opener |
19 self.root = root |
19 self.root = root |
370 try: |
370 try: |
371 type, mode, size, time = self[fn] |
371 type, mode, size, time = self[fn] |
372 except KeyError: |
372 except KeyError: |
373 unknown.append(fn) |
373 unknown.append(fn) |
374 continue |
374 continue |
375 # XXX: what to do with file no longer present in the fs |
375 if src == 'm': |
376 # who are not removed in the dirstate ? |
376 try: |
377 if src == 'm' and not type == 'r': |
377 st = os.stat(fn) |
378 deleted.append(fn) |
378 except OSError, inst: |
379 continue |
379 # XXX: what to do with file no longer present in the fs |
|
380 # who are not removed in the dirstate ? |
|
381 if inst.errno != errno.ENOENT: |
|
382 raise |
|
383 deleted.append(fn) |
|
384 continue |
380 # check the common case first |
385 # check the common case first |
381 if type == 'n': |
386 if type == 'n': |
382 if not st: |
387 if not st: |
383 st = os.stat(fn) |
388 st = os.stat(fn) |
384 if size != st.st_size or (mode ^ st.st_mode) & 0100: |
389 if size != st.st_size or (mode ^ st.st_mode) & 0100: |