~ubuntu-branches/debian/jessie/bzr-git/jessie

« back to all changes in this revision

Viewing changes to object_store.py

  • Committer: Package Import Robot
  • Author(s): Jelmer Vernooij
  • Date: 2011-12-15 19:06:37 UTC
  • mfrom: (1.1.25)
  • Revision ID: package-import@ubuntu.com-20111215190637-cd1n2iathdjg1u97
Tags: 0.6.6-1
* Use DEP5 format for copyright file.
* New upstream release.
 + Copes with new `possible_transports` argument for Branch.open added in
   bzr 2.5b4. Closes: #652178
 + Copes with removal of global options in bzr 2.5b4. LP: #903639
 + Fixes support for directories in `bzr add`. LP: #894195

Show diffs side-by-side

added added

removed removed

Lines of Context:
50
50
    directory_to_tree,
51
51
    extract_unusual_modes,
52
52
    mapping_registry,
 
53
    object_mode,
53
54
    symlink_to_blob,
54
55
    )
55
56
from bzrlib.plugins.git.unpeel_map import (
89
90
        except KeyError:
90
91
            tree = self.repository.revision_tree(revid)
91
92
            self.add(tree)
92
 
        assert tree.get_revision_id() == tree.inventory.revision_id
93
93
        return tree
94
94
 
95
95
    def iter_revision_trees(self, revids):
398
398
        return self.mapping.export_commit(rev, tree_sha, parent_lookup,
399
399
            roundtrip, verifiers)
400
400
 
401
 
    def _create_fileid_map_blob(self, inv):
 
401
    def _create_fileid_map_blob(self, tree):
402
402
        # FIXME: This can probably be a lot more efficient, 
403
403
        # not all files necessarily have to be processed.
404
404
        file_ids = {}
405
 
        for (path, ie) in inv.iter_entries():
 
405
        for (path, ie) in tree.inventory.iter_entries():
406
406
            if self.mapping.generate_file_id(path) != ie.file_id:
407
407
                file_ids[path] = ie.file_id
408
408
        return self.mapping.export_fileid_map(file_ids)
436
436
                root_tree = self[self[base_sha1].tree]
437
437
            root_ie = tree.inventory.root
438
438
        if roundtrip and self.mapping.BZR_FILE_IDS_FILE is not None:
439
 
            b = self._create_fileid_map_blob(tree.inventory)
 
439
            b = self._create_fileid_map_blob(tree)
440
440
            if b is not None:
441
441
                root_tree[self.mapping.BZR_FILE_IDS_FILE] = (
442
442
                    (stat.S_IFREG | 0644), b.id)
500
500
            _check_expected_sha(expected_sha, blob)
501
501
            yield blob
502
502
 
503
 
    def _reconstruct_tree(self, fileid, revid, inv, unusual_modes,
 
503
    def _reconstruct_tree(self, fileid, revid, bzr_tree, unusual_modes,
504
504
        expected_sha=None):
505
505
        """Return a Git Tree object from a file id and a revision stored in bzr.
506
506
 
513
513
                    return self._cache.idmap.lookup_tree_id(entry.file_id,
514
514
                        revid)
515
515
                except (NotImplementedError, KeyError):
516
 
                    obj = self._reconstruct_tree(entry.file_id, revid, inv,
 
516
                    obj = self._reconstruct_tree(entry.file_id, revid, bzr_tree,
517
517
                        unusual_modes)
518
518
                    if obj is None:
519
519
                        return None
529
529
                        [(entry.file_id, entry.revision, None)]).next().id
530
530
            else:
531
531
                raise AssertionError("unknown entry kind '%s'" % entry.kind)
532
 
        tree = directory_to_tree(inv[fileid], get_ie_sha1, unusual_modes,
 
532
        tree = directory_to_tree(bzr_tree.inventory[fileid], get_ie_sha1, unusual_modes,
533
533
            self.mapping.BZR_DUMMY_FILE)
534
 
        if (inv.root.file_id == fileid and
 
534
        if (bzr_tree.get_root_id() == fileid and
535
535
            self.mapping.BZR_FILE_IDS_FILE is not None):
536
536
            if tree is None:
537
537
                tree = Tree()
538
 
            b = self._create_fileid_map_blob(inv)
 
538
            b = self._create_fileid_map_blob(bzr_tree)
539
539
            # If this is the root tree, add the file ids
540
540
            tree[self.mapping.BZR_FILE_IDS_FILE] = (
541
541
                (stat.S_IFREG | 0644), b.id)
672
672
                unusual_modes = extract_unusual_modes(rev)
673
673
                try:
674
674
                    return self._reconstruct_tree(fileid, revid,
675
 
                        tree.inventory, unusual_modes, expected_sha=sha)
 
675
                        tree, unusual_modes, expected_sha=sha)
676
676
                except errors.NoSuchRevision:
677
677
                    raise KeyError(sha)
678
678
            else: