comparison mercurial/dirstate.py @ 1476:17e8c70fb670

fix dirstate.change: it should walk ignored files
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Fri, 28 Oct 2005 10:57:40 -0700
parents f56f38a1a85f
children 2bc6cd62a29c
comparison
equal deleted inserted replaced
1475:d791c335fb7b 1476:17e8c70fb670
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: