store: add a contains method to fncachestore
Adds a __contains__ method to fncachestore to check for file/dir existence (using fncache.__contains__).
Also extends fncache.__contains__ to check for directories (by prefix matching)
--- a/mercurial/store.py Thu Sep 13 17:00:34 2012 -0700
+++ b/mercurial/store.py Thu Sep 13 17:57:43 2012 -0700
@@ -425,10 +425,19 @@
self._dirty = True
self.entries.add(fn)
- def __contains__(self, fn):
+ def __contains__(self, path):
if self.entries is None:
self._load()
- return fn in self.entries
+ # Check for files (exact match)
+ if path + ".i" in self.entries:
+ return True
+ # Now check for directories (prefix match)
+ if not path.endswith('/'):
+ path += '/'
+ for e in self.entries:
+ if e.startswith(path):
+ return True
+ return False
def __iter__(self):
if self.entries is None:
@@ -511,6 +520,11 @@
def write(self):
self.fncache.write()
+ def __contains__(self, path):
+ '''Checks if the store contains path'''
+ path = "/".join(("data", path))
+ return path in self.fncache
+
def store(requirements, path, vfstype):
if 'store' in requirements:
if 'fncache' in requirements: