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 |
|
|
487 | def changes(self, files=None, match=util.always): | |
|
488 | 488 | self.read() |
|
489 | 489 | dc = self.map.copy() |
|
490 |
lookup, |
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
508 |
elif |
|
|
510 | modified.append(fn) | |
|
511 | elif c[3] != s.st_mtime: | |
|
509 | 512 | lookup.append(fn) |
|
510 | 513 | else: |
|
511 |
|
|
|
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