Show More
@@ -461,6 +461,23 b' class dirstate(object):' | |||||
461 | work = [] |
|
461 | work = [] | |
462 | wadd = work.append |
|
462 | wadd = work.append | |
463 |
|
463 | |||
|
464 | if match.anypats(): | |||
|
465 | #match.match with patterns | |||
|
466 | dostep3 = True | |||
|
467 | nomatches = False | |||
|
468 | elif not match.files(): | |||
|
469 | #match.always or match.never | |||
|
470 | dostep3 = matchfn('') | |||
|
471 | nomatches = not dostep3 | |||
|
472 | else: | |||
|
473 | #match.exact or match.match without pattern | |||
|
474 | dostep3 = False | |||
|
475 | nomatches = matchfn == match.exact | |||
|
476 | ||||
|
477 | if nomatches: | |||
|
478 | #skip step 2 | |||
|
479 | dirignore = util.always | |||
|
480 | ||||
464 | files = set(match.files()) |
|
481 | files = set(match.files()) | |
465 | if not files or '.' in files: |
|
482 | if not files or '.' in files: | |
466 | files = [''] |
|
483 | files = [''] | |
@@ -476,6 +493,7 b' class dirstate(object):' | |||||
476 | st = lstat(join(nf)) |
|
493 | st = lstat(join(nf)) | |
477 | kind = getkind(st.st_mode) |
|
494 | kind = getkind(st.st_mode) | |
478 | if kind == dirkind: |
|
495 | if kind == dirkind: | |
|
496 | dostep3 = True | |||
479 | if nf in dmap: |
|
497 | if nf in dmap: | |
480 | #file deleted on disc but still in dirstate |
|
498 | #file deleted on disc but still in dirstate | |
481 | results[nf] = None |
|
499 | results[nf] = None | |
@@ -497,6 +515,7 b' class dirstate(object):' | |||||
497 | keep = True |
|
515 | keep = True | |
498 | break |
|
516 | break | |
499 | elif fn.startswith(prefix): |
|
517 | elif fn.startswith(prefix): | |
|
518 | dostep3 = True | |||
500 | keep = True |
|
519 | keep = True | |
501 | break |
|
520 | break | |
502 | if not keep: |
|
521 | if not keep: | |
@@ -541,11 +560,12 b' class dirstate(object):' | |||||
541 | results[nf] = None |
|
560 | results[nf] = None | |
542 |
|
561 | |||
543 | # step 3: report unseen items in the dmap hash |
|
562 | # step 3: report unseen items in the dmap hash | |
544 | visit = sorted([f for f in dmap if f not in results and matchfn(f)]) |
|
563 | if dostep3 and not nomatches: | |
545 | for nf, st in zip(visit, util.statfiles([join(i) for i in visit])): |
|
564 | visit = sorted([f for f in dmap if f not in results and matchfn(f)]) | |
546 | if not st is None and not getkind(st.st_mode) in (regkind, lnkkind): |
|
565 | for nf, st in zip(visit, util.statfiles([join(i) for i in visit])): | |
547 | st = None |
|
566 | if not st is None and not getkind(st.st_mode) in (regkind, lnkkind): | |
548 | results[nf] = st |
|
567 | st = None | |
|
568 | results[nf] = st | |||
549 |
|
569 | |||
550 | del results['.hg'] |
|
570 | del results['.hg'] | |
551 | return results |
|
571 | return results |
General Comments 0
You need to be logged in to leave comments.
Login now