diff --git a/swh/loader/git/from_disk.py b/swh/loader/git/from_disk.py --- a/swh/loader/git/from_disk.py +++ b/swh/loader/git/from_disk.py @@ -228,6 +228,12 @@ else: branches[ref] = None + for ref, target in self.repo.refs.get_symrefs().items(): + branches[ref] = { + 'target': target, + 'target_type': 'alias', + } + self.snapshot = converters.branches_to_snapshot(branches) return self.snapshot diff --git a/swh/loader/git/loader.py b/swh/loader/git/loader.py --- a/swh/loader/git/loader.py +++ b/swh/loader/git/loader.py @@ -234,11 +234,14 @@ pack_buffer.write(data) - remote_refs = client.fetch_pack(path, + pack_result = client.fetch_pack(path, base_repo.determine_wants, base_repo.graph_walker(), do_pack, - progress=do_activity).refs + progress=do_activity) + + remote_refs = pack_result.refs + symbolic_refs = pack_result.symrefs if remote_refs: local_refs = base_repo.find_remote_ref_types_in_swh(remote_refs) @@ -252,6 +255,7 @@ return { 'remote_refs': base_repo.filter_unwanted_refs(remote_refs), 'local_refs': local_refs, + 'symbolic_refs': symbolic_refs, 'pack_buffer': pack_buffer, 'pack_size': pack_size, } @@ -313,6 +317,7 @@ self.remote_refs = fetch_info['remote_refs'] self.local_refs = fetch_info['local_refs'] + self.symbolic_refs = fetch_info['symbolic_refs'] origin_url = self.origin['url'] @@ -466,6 +471,9 @@ branches[ref] = ret_ref + for ref, target in self.symbolic_refs.items(): + branches[ref] = {'target_type': 'alias', 'target': target} + self.snapshot = converters.branches_to_snapshot(branches) return self.snapshot diff --git a/swh/loader/git/tests/test_from_disk.py b/swh/loader/git/tests/test_from_disk.py --- a/swh/loader/git/tests/test_from_disk.py +++ b/swh/loader/git/tests/test_from_disk.py @@ -32,14 +32,14 @@ '4bdb40dfd6ec75cb730e678b5d7786e30170c5fb', # file2.txt } -SNAPSHOT_ID = 'bdf3b06d6017e0d9ad6447a73da6ff1ae9efb8f0' +SNAPSHOT_ID = 'a23699280a82a043f8c0994cf1631b568f716f95' SNAPSHOT1 = { 'id': SNAPSHOT_ID, 'branches': { 'HEAD': { - 'target': '2f01f5ca7e391a2f08905990277faf81e709a649', - 'target_type': 'revision', + 'target': 'refs/heads/master', + 'target_type': 'alias', }, 'refs/heads/master': { 'target': '2f01f5ca7e391a2f08905990277faf81e709a649',