##// END OF EJS Templates
dirstate.changes() now distinguishes 'hg remove'd or just deleted files....
Thomas Arendsen Hein -
r861:cbe5c4d0 default
parent child Browse files
Show More
@@ -10,7 +10,7 b' import util'
10 10 from revlog import *
11 11 from demandload import *
12 12 demandload(globals(), "re lock urllib urllib2 transaction time socket")
13 demandload(globals(), "tempfile httprangereader bdiff urlparse")
13 demandload(globals(), "tempfile httprangereader bdiff urlparse stat")
14 14 demandload(globals(), "bisect select")
15 15
16 16 class filelog(revlog):
@@ -484,33 +484,41 b' class dirstate:'
484 484 if match(fn):
485 485 yield src, fn
486 486
487 def changes(self, files = None, match = util.always):
487 def changes(self, files=None, match=util.always):
488 488 self.read()
489 489 dc = self.map.copy()
490 lookup, changed, added, unknown = [], [], [], []
490 lookup, modified, added, unknown = [], [], [], []
491 removed, deleted = [], []
491 492
492 493 for src, fn in self.walk(files, match):
493 try: s = os.stat(os.path.join(self.root, fn))
494 except: continue
495
496 if fn in dc:
497 c = dc[fn]
494 try:
495 s = os.stat(os.path.join(self.root, fn))
496 except OSError:
497 continue
498 if not stat.S_ISREG(s.st_mode):
499 continue
500 c = dc.get(fn)
501 if c:
498 502 del dc[fn]
499
500 503 if c[0] == 'm':
501 changed.append(fn)
504 modified.append(fn)
502 505 elif c[0] == 'a':
503 506 added.append(fn)
504 507 elif c[0] == 'r':
505 508 unknown.append(fn)
506 509 elif c[2] != s.st_size or (c[1] ^ s.st_mode) & 0100:
507 changed.append(fn)
508 elif c[1] != s.st_mode or c[3] != s.st_mtime:
510 modified.append(fn)
511 elif c[3] != s.st_mtime:
509 512 lookup.append(fn)
510 513 else:
511 if match(fn): unknown.append(fn)
514 unknown.append(fn)
512 515
513 return (lookup, changed, added, filter(match, dc.keys()), unknown)
516 for fn, c in [(fn, c) for fn, c in dc.items() if match(fn)]:
517 if c[0] == 'r':
518 removed.append(fn)
519 else:
520 deleted.append(fn)
521 return (lookup, modified, added, removed + deleted, unknown)
514 522
515 523 # used to avoid circular references so destructors work
516 524 def opener(base):
General Comments 0
You need to be logged in to leave comments. Login now