mercurial/context.py
changeset 32812 add613cddcb6
parent 32781 448fc659a430
child 32813 6d73b7ff8f92
equal deleted inserted replaced
32811:ff02bb5979c1 32812:add613cddcb6
  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