/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 versionedfiles.py

Support submodules during fetch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
    Tree,
24
24
    )
25
25
 
26
 
from bzrlib.revision import (
27
 
    NULL_REVISION,
28
 
    )
29
26
from bzrlib.versionedfile import (
30
27
    AbsentContentFactory,
31
28
    FulltextContentFactory,
35
32
 
36
33
class GitRevisions(VersionedFiles):
37
34
 
38
 
    def __init__(self, object_store):
 
35
    def __init__(self, repository, object_store):
 
36
        self.repository = repository
39
37
        self.object_store = object_store
40
38
 
41
39
    def check(self, progressbar=None):
54
52
 
55
53
    def get_record_stream(self, keys, ordering, include_delta_closure):
56
54
        for key in keys:
57
 
            (sha,) = key
 
55
            (revid,) = key
 
56
            (commit_id, mapping) = self.repository.lookup_bzr_revision_id(revid)
58
57
            try:
59
 
                text = self.object_store.get_raw(sha)
 
58
                commit = self.object_store[commit_id]
60
59
            except KeyError:
61
60
                yield AbsentContentFactory(key)
62
61
            else:
63
 
                yield FulltextContentFactory(key, None, None, text)
 
62
                yield FulltextContentFactory(key, 
 
63
                    tuple([(self.repository.lookup_foreign_revision_id(p, mapping),) for p in commit.parents]), None, 
 
64
                    commit.as_raw_string())
64
65
 
65
66
    def get_parent_map(self, keys):
66
67
        ret = {}
67
 
        for (key,) in keys:
 
68
        for (revid,) in keys:
 
69
            (commit_id, mapping) = self.repository.lookup_bzr_revision_id(revid)
68
70
            try:
69
 
                ret[(key,)] = [(p,) for p in self.object_store[key].parents]
 
71
                ret[(revid,)] = [(self.repository.lookup_foreign_revision_id(p, mapping),) for p in self.object_store[commit_id].parents]
70
72
            except KeyError:
71
 
                ret[(key,)] = None
 
73
                ret[(revid,)] = None
72
74
        return ret
73
75
 
74
76
 
88
90
    def get_record_stream(self, keys, ordering, include_delta_closure):
89
91
        for key in keys:
90
92
            (fileid, revid) = key
91
 
            (foreign_revid, mapping) = self.repository.lookup_git_revid(revid)
92
 
            root_tree = self.object_store[foreign_revid].tree
 
93
            (commit_id, mapping) = self.repository.lookup_bzr_revision_id(revid)
 
94
            root_tree = self.object_store[commit_id].tree
93
95
            path = mapping.parse_file_id(fileid)
94
96
            try:
95
 
                obj = tree_lookup_path(self.object_store.__getitem__, 
96
 
                                       root_tree, path)
 
97
                (mode, item_id) = tree_lookup_path(
 
98
                    self.object_store.__getitem__, root_tree, path)
 
99
                obj = self.object_store[item_id]
97
100
            except KeyError:
98
101
                yield AbsentContentFactory(key)
99
102
            else:
100
103
                if isinstance(obj, Tree):
101
104
                    yield FulltextContentFactory(key, None, None, "")
102
105
                elif isinstance(obj, Blob):
103
 
                    yield FulltextContentFactory(key, None, None, obj._text)
 
106
                    yield FulltextContentFactory(key, None, None, obj.data)
104
107
                else:
105
 
                    yield AbsentContentFactory(key)
 
108
                    raise AssertionError("file text resolved to %r" % obj)
106
109
 
107
110
    def get_parent_map(self, keys):
108
111
        raise NotImplementedError(self.get_parent_map)