diff --git a/swh/loader/git/dumb.py b/swh/loader/git/dumb.py --- a/swh/loader/git/dumb.py +++ b/swh/loader/git/dumb.py @@ -77,7 +77,7 @@ self.base_repo = base_repo self.objects: Dict[bytes, Set[bytes]] = defaultdict(set) self.refs = self._get_refs() - self.head = self._get_head() + self.head = self._get_head() if self.refs else {} self.packs = self._get_packs() def fetch_object_ids(self) -> None: diff --git a/swh/loader/git/tests/test_loader.py b/swh/loader/git/tests/test_loader.py --- a/swh/loader/git/tests/test_loader.py +++ b/swh/loader/git/tests/test_loader.py @@ -14,6 +14,7 @@ import dulwich.repo import pytest +from swh.loader.git import dumb from swh.loader.git.loader import GitLoader from swh.loader.git.tests.test_from_disk import FullGitLoaderTests from swh.loader.tests import ( @@ -257,6 +258,29 @@ "snapshot": 1, } + def test_load_empty_repository(self, mocker): + class GitObjectsFetcherNoRefs(dumb.GitObjectsFetcher): + def _get_refs(self): + return {} + + mocker.patch.object(dumb, "GitObjectsFetcher", GitObjectsFetcherNoRefs) + + res = self.loader.load() + + assert res == {"status": "uneventful"} + + stats = get_stats(self.loader.storage) + assert stats == { + "content": 0, + "directory": 0, + "origin": 1, + "origin_visit": 1, + "release": 0, + "revision": 0, + "skipped_content": 0, + "snapshot": 1, + } + class TestDumbGitLoaderWithPack(DumbGitLoaderTestBase): @classmethod