Show More
@@ -685,26 +685,11 b' def addremove(repo, pats=[], opts={}, dr' | |||||
685 | if similarity is None: |
|
685 | if similarity is None: | |
686 | similarity = float(opts.get('similarity') or 0) |
|
686 | similarity = float(opts.get('similarity') or 0) | |
687 | # we'd use status here, except handling of symlinks and ignore is tricky |
|
687 | # we'd use status here, except handling of symlinks and ignore is tricky | |
688 | added, unknown, deleted, removed = [], [], [], [] |
|
|||
689 | audit_path = pathauditor(repo.root) |
|
|||
690 | m = match(repo[None], pats, opts) |
|
688 | m = match(repo[None], pats, opts) | |
691 | rejected = [] |
|
689 | rejected = [] | |
692 | m.bad = lambda x, y: rejected.append(x) |
|
690 | m.bad = lambda x, y: rejected.append(x) | |
693 |
|
691 | |||
694 | ctx = repo[None] |
|
692 | added, unknown, deleted, removed = _interestingfiles(repo, m) | |
695 | dirstate = repo.dirstate |
|
|||
696 | walkresults = dirstate.walk(m, sorted(ctx.substate), True, False) |
|
|||
697 | for abs, st in walkresults.iteritems(): |
|
|||
698 | dstate = dirstate[abs] |
|
|||
699 | if dstate == '?' and audit_path.check(abs): |
|
|||
700 | unknown.append(abs) |
|
|||
701 | elif dstate != 'r' and not st: |
|
|||
702 | deleted.append(abs) |
|
|||
703 | # for finding renames |
|
|||
704 | elif dstate == 'r': |
|
|||
705 | removed.append(abs) |
|
|||
706 | elif dstate == 'a': |
|
|||
707 | added.append(abs) |
|
|||
708 |
|
693 | |||
709 | unknownset = set(unknown) |
|
694 | unknownset = set(unknown) | |
710 | toprint = unknownset.copy() |
|
695 | toprint = unknownset.copy() | |
@@ -744,6 +729,32 b' def addremove(repo, pats=[], opts={}, dr' | |||||
744 | return 1 |
|
729 | return 1 | |
745 | return 0 |
|
730 | return 0 | |
746 |
|
731 | |||
|
732 | def _interestingfiles(repo, matcher): | |||
|
733 | '''Walk dirstate with matcher, looking for files that addremove would care | |||
|
734 | about. | |||
|
735 | ||||
|
736 | This is different from dirstate.status because it doesn't care about | |||
|
737 | whether files are modified or clean.''' | |||
|
738 | added, unknown, deleted, removed = [], [], [], [] | |||
|
739 | audit_path = pathauditor(repo.root) | |||
|
740 | ||||
|
741 | ctx = repo[None] | |||
|
742 | dirstate = repo.dirstate | |||
|
743 | walkresults = dirstate.walk(matcher, sorted(ctx.substate), True, False) | |||
|
744 | for abs, st in walkresults.iteritems(): | |||
|
745 | dstate = dirstate[abs] | |||
|
746 | if dstate == '?' and audit_path.check(abs): | |||
|
747 | unknown.append(abs) | |||
|
748 | elif dstate != 'r' and not st: | |||
|
749 | deleted.append(abs) | |||
|
750 | # for finding renames | |||
|
751 | elif dstate == 'r': | |||
|
752 | removed.append(abs) | |||
|
753 | elif dstate == 'a': | |||
|
754 | added.append(abs) | |||
|
755 | ||||
|
756 | return added, unknown, deleted, removed | |||
|
757 | ||||
747 | def dirstatecopy(ui, repo, wctx, src, dst, dryrun=False, cwd=None): |
|
758 | def dirstatecopy(ui, repo, wctx, src, dst, dryrun=False, cwd=None): | |
748 | """Update the dirstate to reflect the intent of copying src to dst. For |
|
759 | """Update the dirstate to reflect the intent of copying src to dst. For | |
749 | different reasons it might not end with dst being marked as copied from src. |
|
760 | different reasons it might not end with dst being marked as copied from src. |
General Comments 0
You need to be logged in to leave comments.
Login now