pathauditor: use normcase()-ed path for audit result cache stable
authorFUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Fri, 16 Dec 2011 21:09:40 +0900
branchstable
changeset 15664 ec8730886f36
parent 15663 9036c7d106bf
child 15665 081e795c60e0
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.
mercurial/scmutil.py
--- a/mercurial/scmutil.py	Fri Dec 09 17:35:00 2011 +0100
+++ b/mercurial/scmutil.py	Fri Dec 16 21:09:40 2011 +0900
@@ -81,12 +81,12 @@
         '''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 @@
             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)