commit - 59f842daf3f3d4f07db6375b2c32552556453e86
commit + 7c0f5a1425593975d49059f50e2ba6a42d1a61d3
blob - 496828cd69e0755ca1138d8062b346abc39efa01
blob + e7297fdbd9ff799ebafe7b1ef4416af54913fc14
--- swh/loader/git/loader.py
+++ swh/loader/git/loader.py
else:
raise TypeError(f"Unexpected content type: {content}")
+ # For now, always submit all received tags to the archive.
+ # Tags will not necessarily point at objects sent within the same
+ # pack file. Releases could be "retagged" to an arbitrary commit.
+ #
+ # XXX This could result in tags pointing at commits which are
+ # missing from the archive.
try:
tag_vertices = self._object_graph.vs.select(object_type=GitObjectType.TAG)
- except KeyError:
- tag_vertices = set()
- missing_releases = set()
- if len(missing_revisions) > 0:
- self.log.debug(
- "Searching for packed tags which depend on missing packed objects"
- )
- for t in tag_vertices:
- tag_hash = t["name"]
- for dep_hash, dep_type in get_neighbors(t):
- if (
- dep_hash in missing_revisions
- or dep_hash in missing_directories
- or dep_hash in missing_contents
- ):
- # We can infer that the tag is also missing.
- missing_releases.add(tag_hash)
- break
- self.log.debug(
- "Number of packed tag considered missing by implication: "
- f"{len(missing_releases)}"
- )
- else:
tag_hashes = [t["name"] for t in tag_vertices]
missing_releases = set(self.storage.release_missing(tag_hashes))
+ except KeyError:
+ pass
for tree_hash in missing_directories:
obj = self.pack[hashutil.hash_to_bytehex(tree_hash)]