def get_manifest_and_flags_by_revid(self, revid): try: return self._get_cached_manifest(revid) except KeyError: pass try: ft = self._get_cached_manifest_text(revid) except KeyError: pass else: return parse_manifest(ft) return self._reconstruct_manifest_and_flags_by_revid(revid)
def get_manifest_and_flags_by_revids(self, revids): if self.manifests_vf is not None: stream = self.manifests_vf.get_record_stream( ((revid, ) for revid in revids), "topological", True) else: stream = (AbsentContentFactory((revid, )) for revid in revids) for record in stream: if record.storage_kind == 'absent': yield (record.key[0], self._reconstruct_manifest_and_flags_by_revid( record.key)) else: yield (record.key[0], parse_manifest(record.get_bytes_as('fulltext')))
def _unpack_manifests(self, chunkiter, mapping, kind_map, todo, pb): """Unpack the manifest deltas. :param chunkiter: Iterator over delta chunks for the manifest. :param mapping: Bzr<->Hg mapping :param pb: Progress bar """ chunks = unpack_chunk_iter(chunkiter, self._target_overlay.get_manifest_text) for i, (fulltext, hgkey, hgparents, csid) in enumerate(chunks): pb.update("fetching manifests", i, len(self._revisions)) (manifest, flags) = parse_manifest(fulltext) for revid in self._manifest2rev_map[hgkey]: todo.append(revid) yield (revid, self._revisions[revid].parent_ids, fulltext) self._process_manifest(manifest, flags, revid, mapping, kind_map)