# HG changeset patch # User Arseniy Alekseyev # Date 2023-01-06 16:27:31 # Node ID 445b4d819e9af9ba433e4dcc40bc8a89520379b9 # Parent 44deb5a164dcb4537042f40f66c089f67a988ef7 pathauditor: no need to normcase the paths The only thing normed paths are used is the key of the caching sets, so the only change of behavior will be that the checks will be repeated for paths that differ by case. If anything, it seems correct for the check to be repeated, in case that actually affects semantics, but the main reasoning is simplifying the code and making it a bit faster. It looks like the code originally comes from commit [081e795c60e0]: it looks like that commit tried to get rid of the existing norming, but presumably did this overly cautiously, preserving it for the cache keys, even though it was pointless even then. diff --git a/mercurial/pathutil.py b/mercurial/pathutil.py --- a/mercurial/pathutil.py +++ b/mercurial/pathutil.py @@ -72,8 +72,7 @@ class pathauditor: path may contain a pattern (e.g. foodir/**.txt)""" path = util.localpath(path) - normpath = self.normcase(path) - if normpath in self.audited: + if path in self.audited: return # AIX ignores "/" at end of path, others raise EISDIR. if util.endswithsep(path): @@ -109,11 +108,7 @@ class pathauditor: % (path, pycompat.bytestr(base)) ) - normparts = util.splitpath(normpath) - assert len(parts) == len(normparts) - parts.pop() - normparts.pop() # It's important that we check the path parts starting from the root. # We don't want to add "foo/bar/baz" to auditeddir before checking if # there's a "foo/.hg" directory. This also means we won't accidentally @@ -121,16 +116,15 @@ class pathauditor: # expensive to access). for i in range(len(parts)): prefix = pycompat.ossep.join(parts[: i + 1]) - normprefix = pycompat.ossep.join(normparts[: i + 1]) - if normprefix in self.auditeddir: + if prefix in self.auditeddir: continue if self._realfs: self._checkfs(prefix, path) if self._cached: - self.auditeddir.add(normprefix) + self.auditeddir.add(prefix) if self._cached: - self.audited.add(normpath) + self.audited.add(path) def _checkfs(self, prefix, path): # type: (bytes, bytes) -> None