# HG changeset patch # User smuralid # Date 2012-09-14 00:57:43 # Node ID b9a56b816ff28cf54c6cb2f46fe0ac3505de2a3e # Parent 09d5b205529571c440a147894850b52d7541b4d7 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) diff --git a/mercurial/store.py b/mercurial/store.py --- a/mercurial/store.py +++ b/mercurial/store.py @@ -425,10 +425,19 @@ class fncache(object): 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 @@ class fncachestore(basicstore): 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: