|
|
@ -58,7 +58,7 @@ class Repository: |
|
|
_context_depth: int = 0 |
|
|
_context_depth: int = 0 |
|
|
|
|
|
|
|
|
def __init__(self, config_path: Path): |
|
|
def __init__(self, config_path: Path): |
|
|
self._config_path = config_path |
|
|
self._config_path = config_path.resolve() |
|
|
|
|
|
|
|
|
with self._config_path.open("rb") as stream: |
|
|
with self._config_path.open("rb") as stream: |
|
|
config = tomllib.load(stream) |
|
|
config = tomllib.load(stream) |
|
|
@ -209,6 +209,15 @@ class Repository: |
|
|
# return self.add_snapshot(snapshot, dry_run=dry_run) |
|
|
# return self.add_snapshot(snapshot, dry_run=dry_run) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_ref(self, key: str) -> Digest | None: |
|
|
|
|
|
return self._cas.get_ref(key) |
|
|
|
|
|
|
|
|
|
|
|
def set_ref(self, key: str, digest: Digest): |
|
|
|
|
|
self._cas.set_ref(key, digest) |
|
|
|
|
|
|
|
|
|
|
|
def get_head_snapshot(self) -> Digest | None: |
|
|
|
|
|
return self.get_ref("HEAD") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _read(self, digest: Digest, object_type: bytes) -> tuple[ObjectInfo, Blob]: |
|
|
def _read(self, digest: Digest, object_type: bytes) -> tuple[ObjectInfo, Blob]: |
|
|
obj = self._cas.read(digest, object_type=object_type) |
|
|
obj = self._cas.read(digest, object_type=object_type) |
|
|
@ -528,6 +537,21 @@ class Tree: |
|
|
self.write(stream) |
|
|
self.write(stream) |
|
|
return stream.getvalue() |
|
|
return stream.getvalue() |
|
|
|
|
|
|
|
|
|
|
|
def __len__(self) -> int: |
|
|
|
|
|
return len(self.items) |
|
|
|
|
|
|
|
|
|
|
|
def get(self, key: str) -> TreeItem | None: |
|
|
|
|
|
for item in self.items: |
|
|
|
|
|
if item.name == key: |
|
|
|
|
|
return item |
|
|
|
|
|
return None |
|
|
|
|
|
|
|
|
|
|
|
def __getitem__(self, key: str) -> TreeItem: |
|
|
|
|
|
item = self.get(key) |
|
|
|
|
|
if item is None: |
|
|
|
|
|
raise KeyError(f"{key} not found") |
|
|
|
|
|
return item |
|
|
|
|
|
|
|
|
@dataclass(frozen=True, order=True, slots=True) |
|
|
@dataclass(frozen=True, order=True, slots=True) |
|
|
class TreeObject(ObjectInfo): |
|
|
class TreeObject(ObjectInfo): |
|
|
tree: Tree |
|
|
tree: Tree |
|
|
|