Mercurial > hg-stable
changeset 34897:2e350d2a0eca
fsmonitor: use nonnormalset from dirstatemap
`dirstate._nonnormalset` has been moved to `dirstate._map.nonnormalset` by
60927b19ed65 (dirstate: move nonnormal and otherparent sets to dirstatemap)
and is guaranteed to be existed.
Let's update fsmonitor code to use the new `nonnormalset`. Thix fixed a perf
regression that slows down `hg status` by 0.5 seconds in one of our
production repos.
Differential Revision: https://phab.mercurial-scm.org/D1184
author | Jun Wu <quark@fb.com> |
---|---|
date | Wed, 18 Oct 2017 15:42:44 -0700 |
parents | 97017508c863 |
children | 1bde8e8e5de0 |
files | hgext/fsmonitor/__init__.py |
diffstat | 1 files changed, 4 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/fsmonitor/__init__.py Wed Oct 18 22:10:08 2017 -0700 +++ b/hgext/fsmonitor/__init__.py Wed Oct 18 15:42:44 2017 -0700 @@ -274,7 +274,7 @@ matchfn = match.matchfn matchalways = match.always() dmap = self._map._map - nonnormalset = getattr(self, '_nonnormalset', None) + nonnormalset = self._map.nonnormalset copymap = self._map.copymap getkind = stat.S_IFMT @@ -404,7 +404,7 @@ visit = set((f for f in notefiles if (f not in results and matchfn(f) and (f in dmap or not ignore(f))))) - if nonnormalset is not None and not fresh_instance: + if not fresh_instance: if matchalways: visit.update(f for f in nonnormalset if f not in results) visit.update(f for f in copymap if f not in results) @@ -415,15 +415,11 @@ if f not in results and matchfn(f)) else: if matchalways: - visit.update(f for f, st in dmap.iteritems() - if (f not in results and - (st[2] < 0 or st[0] != 'n' or fresh_instance))) + visit.update(f for f, st in dmap.iteritems() if f not in results) visit.update(f for f in copymap if f not in results) else: visit.update(f for f, st in dmap.iteritems() - if (f not in results and - (st[2] < 0 or st[0] != 'n' or fresh_instance) - and matchfn(f))) + if f not in results and matchfn(f)) visit.update(f for f in copymap if f not in results and matchfn(f))