# HG changeset patch # User FUJIWARA Katsunori # Date 2011-12-16 12:09:40 # Node ID ec8730886f36d263ce204ad7d78523cb0e5e47d7 # Parent 9036c7d106bfe45821e4998e621c95f19840c8ef pathauditor: use normcase()-ed path for audit result cache in current pathauditor implementation, un-normcase()-ed path is stored into and compared with audit result cache. this is not efficiency on case insensitive filesystem. diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -81,12 +81,12 @@ class pathauditor(object): '''Check the relative path. path may contain a pattern (e.g. foodir/**.txt)''' - if path in self.audited: + normpath = os.path.normcase(path) + if normpath in self.audited: return # AIX ignores "/" at end of path, others raise EISDIR. if util.endswithsep(path): raise util.Abort(_("path ends in directory separator: %s") % path) - normpath = os.path.normcase(path) parts = util.splitpath(normpath) if (os.path.splitdrive(path)[0] or parts[0].lower() in ('.hg', '.hg.', '') @@ -128,7 +128,7 @@ class pathauditor(object): prefixes.append(prefix) parts.pop() - self.audited.add(path) + self.audited.add(normpath) # only add prefixes to the cache after checking everything: we don't # want to add "foo/bar/baz" before checking if there's a "foo/.hg" self.auditeddir.update(prefixes)