1736 # missing file matches a directory, etc, but we don't need to |
1736 # missing file matches a directory, etc, but we don't need to |
1737 # bother with that: if f has made it to this point, we're sure |
1737 # bother with that: if f has made it to this point, we're sure |
1738 # it's in the dirstate. |
1738 # it's in the dirstate. |
1739 deleted.append(f) |
1739 deleted.append(f) |
1740 |
1740 |
1741 # update dirstate for files that are actually clean |
1741 return modified, deleted, fixup |
|
1742 |
|
1743 def _poststatusfixup(self, fixup): |
|
1744 """update dirstate for files that are actually clean""" |
1742 if fixup: |
1745 if fixup: |
1743 try: |
1746 try: |
1744 oldid = self._repo.dirstate.identity() |
1747 oldid = self._repo.dirstate.identity() |
1745 |
1748 |
1746 # updating the dirstate is optional |
1749 # updating the dirstate is optional |
1765 # caching (see also issue5584 for detail) |
1768 # caching (see also issue5584 for detail) |
1766 self._repo.ui.debug('skip updating dirstate: ' |
1769 self._repo.ui.debug('skip updating dirstate: ' |
1767 'identity mismatch\n') |
1770 'identity mismatch\n') |
1768 except error.LockError: |
1771 except error.LockError: |
1769 pass |
1772 pass |
1770 return modified, deleted, fixup |
|
1771 |
1773 |
1772 def _dirstatestatus(self, match=None, ignored=False, clean=False, |
1774 def _dirstatestatus(self, match=None, ignored=False, clean=False, |
1773 unknown=False): |
1775 unknown=False): |
1774 '''Gets the status from the dirstate -- internal use only.''' |
1776 '''Gets the status from the dirstate -- internal use only.''' |
1775 listignored, listclean, listunknown = ignored, clean, unknown |
1777 listignored, listclean, listunknown = ignored, clean, unknown |
1779 subrepos = sorted(self.substate) |
1781 subrepos = sorted(self.substate) |
1780 cmp, s = self._repo.dirstate.status(match, subrepos, listignored, |
1782 cmp, s = self._repo.dirstate.status(match, subrepos, listignored, |
1781 listclean, listunknown) |
1783 listclean, listunknown) |
1782 |
1784 |
1783 # check for any possibly clean files |
1785 # check for any possibly clean files |
|
1786 fixup = [] |
1784 if cmp: |
1787 if cmp: |
1785 modified2, deleted2, fixup = self._checklookup(cmp) |
1788 modified2, deleted2, fixup = self._checklookup(cmp) |
1786 s.modified.extend(modified2) |
1789 s.modified.extend(modified2) |
1787 s.deleted.extend(deleted2) |
1790 s.deleted.extend(deleted2) |
1788 |
1791 |
1789 # update dirstate for files that are actually clean |
|
1790 if fixup and listclean: |
1792 if fixup and listclean: |
1791 s.clean.extend(fixup) |
1793 s.clean.extend(fixup) |
|
1794 |
|
1795 self._poststatusfixup(fixup) |
1792 |
1796 |
1793 if match.always(): |
1797 if match.always(): |
1794 # cache for performance |
1798 # cache for performance |
1795 if s.unknown or s.ignored or s.clean: |
1799 if s.unknown or s.ignored or s.clean: |
1796 # "_status" is cached with list*=False in the normal route |
1800 # "_status" is cached with list*=False in the normal route |