Changeset View
Changeset View
Standalone View
Standalone View
swh/vault/cookers/git_bare.py
Show All 19 Lines | |||||
import datetime | import datetime | ||||
import os.path | import os.path | ||||
import subprocess | import subprocess | ||||
import tarfile | import tarfile | ||||
import tempfile | import tempfile | ||||
from typing import Any, Dict, Iterable, List, Set | from typing import Any, Dict, Iterable, List, Set | ||||
import zlib | import zlib | ||||
from swh.core.api.classes import stream_results | |||||
from swh.graph.client import GraphArgumentException | from swh.graph.client import GraphArgumentException | ||||
from swh.model import identifiers | from swh.model import identifiers | ||||
from swh.model.hashutil import hash_to_bytehex, hash_to_hex | from swh.model.hashutil import hash_to_bytehex, hash_to_hex | ||||
from swh.model.model import ( | from swh.model.model import ( | ||||
Person, | Person, | ||||
Revision, | Revision, | ||||
RevisionType, | RevisionType, | ||||
Sha1Git, | Sha1Git, | ||||
▲ Show 20 Lines • Show All 210 Lines • ▼ Show 20 Lines | def write_revision_node(self, revision: Dict[str, Any]) -> bool: | ||||
return self.write_object(revision["id"], git_object) | return self.write_object(revision["id"], git_object) | ||||
def load_directories(self, obj_ids: List[Sha1Git]) -> None: | def load_directories(self, obj_ids: List[Sha1Git]) -> None: | ||||
for obj_id in obj_ids: | for obj_id in obj_ids: | ||||
self.load_directory(obj_id) | self.load_directory(obj_id) | ||||
def load_directory(self, obj_id: Sha1Git) -> None: | def load_directory(self, obj_id: Sha1Git) -> None: | ||||
# Load the directory | # Load the directory | ||||
entries = list(self.storage.directory_ls(obj_id, recursive=False)) | entries = [ | ||||
entry.to_dict() | |||||
for entry in stream_results(self.storage.directory_get_entries, obj_id) | |||||
] | |||||
directory = {"id": obj_id, "entries": entries} | directory = {"id": obj_id, "entries": entries} | ||||
git_object = identifiers.directory_git_object(directory) | git_object = identifiers.directory_git_object(directory) | ||||
self.write_object(obj_id, git_object) | self.write_object(obj_id, git_object) | ||||
# Add children to the stack | # Add children to the stack | ||||
entry_loaders: Dict[str, List[Sha1Git]] = { | entry_loaders: Dict[str, List[Sha1Git]] = { | ||||
"file": self._cnt_stack, | "file": self._cnt_stack, | ||||
"dir": self._dir_stack, | "dir": self._dir_stack, | ||||
Show All 17 Lines |