Changes to one file · Browse files at af0eefac08a7 Showing diff from parent c4f0c51e7583 Diff from another changeset...
@@ -237,6 +237,20 @@ return True
return False
+ def contains_alternate(self, sha):
+ """Check if a particular object is present by SHA1 in the alternate storage."""
+ for alternate in self.alternates:
+ if alternate.contains_loose(sha) or alternate.contains_packed(sha):
+ return True
+ return False
+
+ def __contains__(self, sha):
+ """Check if a particular object is present by SHA1 in the main or alternate stores.
+
+ This method makes no distinction between loose and packed objects.
+ """
+ return self.contains_packed(sha) or self.contains_loose(sha) or self.contains_alternate(sha)
+
def _load_packs(self):
raise NotImplementedError(self._load_packs)
@@ -257,6 +271,12 @@ if self._pack_cache is None or self._pack_cache_stale():
self._pack_cache = self._load_packs()
return self._pack_cache
+
+ def _iter_alternate_objects(self):
+ """Iterate over the SHAs of all the objects in alternate stores."""
+ for alternate in self.alternates:
+ for alternate_object in alternate:
+ yield alternate_object
def _iter_loose_objects(self):
"""Iterate over the SHAs of all loose objects."""
@@ -283,7 +303,7 @@
def __iter__(self):
"""Iterate over the SHAs that are present in this store."""
- iterables = self.packs + [self._iter_loose_objects()]
+ iterables = self.packs + [self._iter_loose_objects()] + [self._iter_alternate_objects()]
return itertools.chain(*iterables)
def contains_loose(self, sha):
|
Loading...