80
80
MAX_INV_CACHE_SIZE = 50 * 1024 * 1024
83
def import_git_blob(texts, mapping, path, hexsha, base_inv, base_ie, parent_id,
84
revision_id, parent_invs, shagitmap, lookup_object, executable, symlink):
83
def import_git_blob(texts, mapping, path, hexsha, base_inv, base_inv_shamap,
84
base_ie, parent_id, revision_id, parent_invs, lookup_object,
85
86
"""Import a git blob object into a bzr repository.
87
88
:param texts: VersionedFiles to add to
177
179
def import_git_submodule(texts, mapping, path, hexsha, base_inv, base_ie,
178
parent_id, revision_id, parent_invs, shagitmap, lookup_object):
180
parent_id, revision_id, parent_invs, lookup_object):
179
181
file_id = mapping.generate_file_id(path)
180
182
ie = TreeReference(file_id, urlutils.basename(path.decode("utf-8")),
208
def import_git_tree(texts, mapping, path, hexsha, base_inv,
209
base_ie, parent_id, revision_id, parent_invs, shagitmap, lookup_object,
210
def import_git_tree(texts, mapping, path, hexsha, base_inv, base_inv_shamap,
211
base_ie, parent_id, revision_id, parent_invs, lookup_object,
210
212
allow_submodules=False):
211
213
"""Import a git tree object into a bzr repository.
230
232
# See if this has changed at all
232
base_sha = shagitmap.lookup_tree(file_id, revision_id)
234
base_sha = base_inv_shamap.lookup_tree(file_id)
233
235
except (KeyError, NotImplementedError):
256
258
if stat.S_ISDIR(mode):
257
259
subinvdelta, grandchildmodes, subshamap = import_git_tree(
258
260
texts, mapping, child_path, child_hexsha, base_inv,
259
base_children.get(basename), file_id,
260
revision_id, parent_invs, shagitmap, lookup_object,
261
base_inv_shamap, base_children.get(basename), file_id,
262
revision_id, parent_invs, lookup_object,
261
263
allow_submodules=allow_submodules)
262
264
invdelta.extend(subinvdelta)
263
265
child_modes.update(grandchildmodes)
267
269
raise SubmodulesRequireSubtrees()
268
270
subinvdelta, grandchildmodes, subshamap = import_git_submodule(
269
271
texts, mapping, child_path, child_hexsha, base_inv, base_children.get(basename),
270
file_id, revision_id, parent_invs, shagitmap, lookup_object)
272
file_id, revision_id, parent_invs, lookup_object)
271
273
invdelta.extend(subinvdelta)
272
274
child_modes.update(grandchildmodes)
273
275
shamap.extend(subshamap)
275
277
subinvdelta, subshamap = import_git_blob(texts, mapping,
276
child_path, child_hexsha, base_inv, base_children.get(basename), file_id,
277
revision_id, parent_invs, shagitmap, lookup_object,
278
child_path, child_hexsha, base_inv, base_inv_shamap,
279
base_children.get(basename), file_id,
280
revision_id, parent_invs, lookup_object,
278
281
mode_is_executable(mode), stat.S_ISLNK(mode))
279
282
invdelta.extend(subinvdelta)
280
283
shamap.extend(subshamap)
312
315
if parent_invs == []:
313
316
base_inv = Inventory(root_id=None)
318
base_inv_shamap = None # Should never be accessed
316
320
base_inv = parent_invs[0]
317
321
base_ie = base_inv.root
322
base_inv_shamap = target_git_object_retriever._idmap.get_inventory_sha_map(base_inv.revision_id)
318
323
inv_delta, unusual_modes, shamap = import_git_tree(repo.texts,
319
mapping, "", o.tree, base_inv, base_ie, None,
320
rev.revision_id, parent_invs, target_git_object_retriever._idmap,
324
mapping, "", o.tree, base_inv, base_inv_shamap, base_ie, None,
325
rev.revision_id, parent_invs, lookup_object,
322
326
allow_submodules=getattr(repo._format, "supports_tree_reference", False))
323
327
target_git_object_retriever._idmap.add_entries(shamap)
324
328
if unusual_modes != {}: