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

Support bzr init --git.

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
from bzrlib.transport import get_transport
36
36
 
37
37
from bzrlib.plugins.git import (
38
 
    cache,
39
 
    ids,
40
38
    versionedfiles
41
39
    )
 
40
from bzrlib.plugins.git.mapping import default_mapping
42
41
 
43
42
 
44
43
class GitRepository(repository.Repository):
51
50
        self.bzrdir = gitdir
52
51
        self.control_files = lockfiles
53
52
        self._git = gitdir._git
54
 
        cache_dir = cache.create_cache_dir()
55
 
        cachedir_transport = get_transport(cache_dir)
56
 
        cache_file = os.path.join(cache_dir, 'cache-%s' % ids.NAMESPACE)
57
53
        self.texts = None
58
54
        self.signatures = versionedfiles.VirtualSignatureTexts(self)
59
55
        self.revisions = versionedfiles.VirtualRevisionTexts(self)
70
66
        while cms != []:
71
67
            cms = self._git.commits("--all", max_count=max_count, skip=skip)
72
68
            skip += max_count
73
 
            ret.update([ids.convert_revision_id_git_to_bzr(cm.id) for cm in cms])
 
69
            ret.update([default_mapping.revision_id_foreign_to_bzr(cm.id) for cm in cms])
74
70
        return ret
75
71
 
76
72
    def is_shared(self):
92
88
            max_count = 1000
93
89
            cms = None
94
90
            while cms != []:
95
 
                cms = self._git.commits(ids.convert_revision_id_bzr_to_git(revision_id), max_count=max_count, skip=skip)
 
91
                cms = self._git.commits(self.lookup_git_revid(revision_id, default_mapping), max_count=max_count, skip=skip)
96
92
                skip += max_count
97
 
                ret += [ids.convert_revision_id_git_to_bzr(cm.id) for cm in cms]
 
93
                ret += [default_mapping.revision_id_foreign_to_bzr(cm.id) for cm in cms]
98
94
        return [None] + ret
99
95
 
100
96
    def get_signature_text(self, revision_id):
109
105
            if revid == revision.NULL_REVISION:
110
106
                ret[revid] = ()
111
107
            else:
112
 
                commit = self._git.commit(ids.convert_revision_id_bzr_to_git(revid))
113
 
                ret[revid] = tuple([ids.convert_revision_id_git_to_bzr(p.id) for p in commit.parents])
 
108
                commit = self._git.commit(self.lookup_git_revid(revid, default_mapping))
 
109
                ret[revid] = tuple([default_mapping.revision_id_foreign_to_bzr(p.id) for p in commit.parents])
114
110
        return ret
115
111
 
 
112
    def lookup_git_revid(self, bzr_revid, mapping):
 
113
        try:
 
114
            return mapping.revision_id_bzr_to_foreign(bzr_revid)
 
115
        except errors.InvalidRevisionId:
 
116
            raise errors.NoSuchRevision(bzr_revid, self)
 
117
 
116
118
    def get_revision(self, revision_id):
117
 
        git_commit_id = ids.convert_revision_id_bzr_to_git(revision_id)
 
119
        git_commit_id = self.lookup_git_revid(revision_id, default_mapping)
118
120
        commit = self._git.commit(git_commit_id)
119
121
        # print "fetched revision:", git_commit_id
120
122
        revision = self._parse_rev(commit)
137
139
 
138
140
        :return: a `bzrlib.revision.Revision` object.
139
141
        """
140
 
        rev = revision.Revision(ids.convert_revision_id_git_to_bzr(commit.id))
141
 
        rev.parent_ids = tuple([ids.convert_revision_id_git_to_bzr(p.id) for p in commit.parents])
 
142
        rev = revision.Revision(default_mapping.revision_id_foreign_to_bzr(commit.id))
 
143
        rev.parent_ids = tuple([default_mapping.revision_id_foreign_to_bzr(p.id) for p in commit.parents])
142
144
        rev.inventory_sha1 = ""
143
145
        rev.message = commit.message.decode("utf-8", "replace")
144
146
        rev.committer = str(commit.committer)
165
167
        assert revision_id != None
166
168
        return self.revision_tree(revision_id).inventory
167
169
 
 
170
    def set_make_working_trees(self, trees):
 
171
        pass
 
172
 
168
173
 
169
174
def escape_file_id(file_id):
170
175
    return file_id.replace('_', '__').replace(' ', '_s')
179
184
    def __init__(self, repository, revision_id):
180
185
        self._repository = repository
181
186
        self.revision_id = revision_id
182
 
        git_id = ids.convert_revision_id_bzr_to_git(revision_id)
 
187
        git_id = repository.lookup_git_revid(revision_id, default_mapping)
183
188
        self.tree = repository._git.commit(git_id).tree
184
189
        self._inventory = inventory.Inventory(revision_id=revision_id)
185
190
        self._inventory.root.revision = revision_id