[PATCH 5 of 5 V2] treemanifest: make hasdir() faster

Martin von Zweigbergk martinvonz at google.com
Mon Mar 16 18:27:11 CDT 2015


# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1426546876 25200
#      Mon Mar 16 16:01:16 2015 -0700
# Node ID fa7e71d04732596a5f6c0714e6c8918a611914dd
# Parent  cee77fda8c7108824307f1750aafcdd76f3409a2
treemanifest: make hasdir() faster

Same rationale as the previous change.

diff -r cee77fda8c71 -r fa7e71d04732 mercurial/manifest.py
--- a/mercurial/manifest.py	Tue Mar 03 13:50:06 2015 -0800
+++ b/mercurial/manifest.py	Mon Mar 16 16:01:16 2015 -0700
@@ -506,7 +506,12 @@
         return self._alldirs
 
     def hasdir(self, dir):
-        return dir in self._alldirs
+        topdir, subdir = _splittopdir(dir)
+        if topdir:
+            if topdir in self._dirs:
+                return self._dirs[topdir].hasdir(subdir)
+            return False
+        return (dir + '/') in self._dirs
 
     def matches(self, match):
         '''generate a new manifest filtered by the match argument'''


More information about the Mercurial-devel mailing list