/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to fetch.py

Move lookup_tree/lookup_blob to a separate object.

Show diffs side-by-side

added added

removed removed

Lines of Context:
80
80
MAX_INV_CACHE_SIZE = 50 * 1024 * 1024
81
81
 
82
82
 
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
    executable, symlink):
85
86
    """Import a git blob object into a bzr repository.
86
87
 
87
88
    :param texts: VersionedFiles to add to
102
103
        base_sha = None
103
104
    else:
104
105
        try:
105
 
            base_sha = shagitmap.lookup_blob(file_id, base_ie.revision)
 
106
            base_sha = base_inv_shamap.lookup_blob(file_id,
 
107
                revision_hint=base_ie.revision)
106
108
        except KeyError:
107
109
            base_sha = None
108
110
        else:
175
177
 
176
178
 
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")),
181
183
        parent_id)
205
207
    return ret
206
208
 
207
209
 
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.
212
214
 
229
231
    else:
230
232
        # See if this has changed at all
231
233
        try:
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):
234
236
            pass
235
237
        else:
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)
274
276
        else:
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)
314
317
        base_ie = None
 
318
        base_inv_shamap = None # Should never be accessed
315
319
    else:
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,
321
 
            lookup_object,
 
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 != {}: