##// END OF EJS Templates
fsmonitor: use new dirstate APIs (issue6728)...
Raphaël Gomès -
r50363:2905b78f stable
parent child Browse files
Show More
@@ -117,6 +117,7 b' import weakref'
117 117
118 118 from mercurial.i18n import _
119 119 from mercurial.node import hex
120
120 121 from mercurial.pycompat import open
121 122 from mercurial import (
122 123 context,
@@ -131,6 +132,9 b' from mercurial import ('
131 132 scmutil,
132 133 util,
133 134 )
135
136 # no-check-code because we're accessing private information only public in pure
137 from mercurial.pure import parsers
134 138 from mercurial import match as matchmod
135 139 from mercurial.utils import (
136 140 hashutil,
@@ -332,10 +336,22 b' def overridewalk(orig, self, match, subr'
332 336 # for better performance, directly access the inner dirstate map if the
333 337 # standard dirstate implementation is in use.
334 338 dmap = dmap._map
339
340 has_mtime = parsers.DIRSTATE_V2_HAS_MTIME
341 mtime_is_ambiguous = parsers.DIRSTATE_V2_MTIME_SECOND_AMBIGUOUS
342 mask = has_mtime | mtime_is_ambiguous
343
344 # All entries that may not be clean
335 345 nonnormalset = {
336 346 f
337 347 for f, e in self._map.items()
338 if e._v1_state() != b"n" or e._v1_mtime() == -1
348 if not e.maybe_clean
349 # same as "not has_time or has_ambiguous_time", but factored to only
350 # need a single access to flags for performance.
351 # `mask` removes all irrelevant bits, then we flip the `mtime` bit so
352 # its `true` value is NOT having a mtime, then check if either bit
353 # is set.
354 or bool((e.v2_data()[0] & mask) ^ has_mtime)
339 355 }
340 356
341 357 copymap = self._map.copymap
@@ -30,6 +30,7 b' New errors are not allowed. Warnings are'
30 30 Skipping contrib/packaging/hgpackaging/pyoxidizer.py it has no-che?k-code (glob)
31 31 Skipping contrib/packaging/hgpackaging/util.py it has no-che?k-code (glob)
32 32 Skipping contrib/packaging/hgpackaging/wix.py it has no-che?k-code (glob)
33 Skipping hgext/fsmonitor/__init__.py it has no-che?k-code (glob)
33 34 Skipping i18n/polib.py it has no-che?k-code (glob)
34 35 Skipping mercurial/statprof.py it has no-che?k-code (glob)
35 36 Skipping tests/testlib/badserverext.py it has no-che?k-code (glob)
General Comments 0
You need to be logged in to leave comments. Login now