diff --git a/swh/loader/mercurial/loader.py b/swh/loader/mercurial/loader.py --- a/swh/loader/mercurial/loader.py +++ b/swh/loader/mercurial/loader.py @@ -41,12 +41,12 @@ MultiHash, hash_to_bytehex, hash_to_bytes, - hash_to_hex, ) from swh.model.model import ( BaseContent, Content, Directory, + ExtID, ObjectType, Origin, Person, @@ -75,6 +75,8 @@ HEAD_POINTER_NAME = b"tip" +EXTID_TYPE = "hg-nodeid" + class CommandErrorWrapper(Exception): """This exception is raised in place of a 'CommandError' @@ -256,6 +258,7 @@ self.releases = {} self.node_2_rev = {} self.heads = {} + self.extids = [] directory = self.directory @@ -531,7 +534,6 @@ type=RevisionType.MERCURIAL, directory=directory_id, message=commit["message"], - metadata={"node": hash_to_hex(header["node"]),}, extra_headers=tuple(extra_headers), synthetic=False, parents=tuple(parents), @@ -540,6 +542,15 @@ self.node_2_rev[header["node"]] = revision.id revisions[revision.id] = revision + revision_swhid = identifiers.CoreSWHID( + object_type=identifiers.ObjectType.REVISION, object_id=revision.id, + ) + self.extids.append( + ExtID( + extid_type=EXTID_TYPE, extid=header["node"], target=revision_swhid + ) + ) + # Converts heads to use swh ids self.heads = { branch_name: (pointer_nature, self.node_2_rev[node_id]) @@ -618,6 +629,10 @@ self.snapshot = Snapshot(branches=branches) return self.snapshot + def store_data(self) -> None: + super().store_data() + self.storage.extid_add(self.extids) + def get_fetch_history_result(self): """Return the data to store in fetch_history.""" return { diff --git a/swh/loader/mercurial/tests/test_loader.py b/swh/loader/mercurial/tests/test_loader.py --- a/swh/loader/mercurial/tests/test_loader.py +++ b/swh/loader/mercurial/tests/test_loader.py @@ -19,7 +19,8 @@ get_stats, prepare_repository_from_archive, ) -from swh.model.hashutil import hash_to_bytes +from swh.model.hashutil import hash_to_bytes, hash_to_hex +from swh.model.identifiers import ObjectType from swh.model.model import RevisionType, Snapshot, SnapshotBranch, TargetType from swh.storage.algos.snapshot import snapshot_get_latest @@ -307,7 +308,11 @@ hg_changesets = set() transplant_sources = set() for rev in swh_storage.revision_log(revisions): - hg_changesets.add(rev["metadata"]["node"]) + extids = list( + loader.storage.extid_get_from_target(ObjectType.REVISION, [rev["id"]]) + ) + assert len(extids) == 1 + hg_changesets.add(hash_to_hex(extids[0].extid)) for k, v in rev["extra_headers"]: if k == b"transplant_source": transplant_sources.add(v.decode("ascii"))