102
102
rev = self.source.get_revision(revid)
103
103
invshamap = self._object_store._idmap.get_inventory_sha_map(revid)
104
104
unusual_modes = extract_unusual_modes(rev)
105
parent_invshamaps = [self._object_store._idmap.get_inventory_sha_map(r) for r in rev.parent_ids]
109
(sha, object) = self._object_store._get_ie_object_or_sha1(ie, inv, invshamap, unusual_modes)
107
for path, obj in self._object_store._inventory_to_objects(inv,
108
list(self.source.iter_inventories(rev.parent_ids)),
111
ie = inv[inv.path2id(path)]
112
self.queue(obj.id, obj, path, ie, inv, unusual_modes)
110
113
if ie.parent_id is None:
112
if not self.need_sha(sha):
114
self.queue(sha, object, inv.id2path(ie.file_id), ie, inv, unusual_modes)
115
if ie.kind == "directory":
116
todo.extend(ie.children.values())
117
assert tree_sha is not None
116
if not rev.parent_ids:
117
from dulwich.objects import Tree
120
tree_sha = parent_invshamaps[0][inv.root.file_id]
118
121
commit = self._object_store._get_commit(rev, tree_sha)
119
122
self.queue(commit.id, commit, None, None)