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

Simplify ref handling in remote.py.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
import stat
23
23
 
24
24
from bzrlib import (
25
 
    bencode,
26
25
    errors,
27
26
    foreign,
28
27
    trace,
29
28
    )
 
29
try:
 
30
    from bzrlib import bencode
 
31
except ImportError:
 
32
    from bzrlib.util import bencode
30
33
from bzrlib.inventory import (
31
34
    ROOT_ID,
32
35
    )
104
107
        super(BzrGitMapping, self).__init__(foreign_git)
105
108
 
106
109
    def __eq__(self, other):
107
 
        return (type(self) == type(other) and
 
110
        return (type(self) == type(other) and 
108
111
                self.revid_prefix == other.revid_prefix)
109
112
 
110
113
    @classmethod
127
130
        # We must just hope they are valid UTF-8..
128
131
        if path == "":
129
132
            return ROOT_ID
130
 
        if type(path) is unicode:
131
 
            path = path.encode("utf-8")
132
133
        return escape_file_id(path)
133
134
 
134
135
    def is_control_file(self, path):
185
186
 
186
187
    def _extract_git_svn_metadata(self, rev, message):
187
188
        lines = message.split("\n")
188
 
        if not (lines[-1] == "" and len(lines) >= 2 and lines[-2].startswith("git-svn-id:")):
 
189
        if not (lines[-1] == "" and lines[-2].startswith("git-svn-id:")):
189
190
            return message
190
191
        git_svn_id = lines[-2].split(": ", 1)[1]
191
192
        rev.properties['git-svn-id'] = git_svn_id
227
228
        b.set_raw_chunks(serialize_fileid_map(fileid_map))
228
229
        return b
229
230
 
230
 
    def export_commit(self, rev, tree_sha, parent_lookup, roundtrip,
231
 
                      verifiers):
 
231
    def export_commit(self, rev, tree_sha, parent_lookup, roundtrip):
232
232
        """Turn a Bazaar revision in to a Git commit
233
233
 
234
234
        :param tree_sha: Tree sha for the commit
235
235
        :param parent_lookup: Function for looking up the GIT sha equiv of a
236
236
            bzr revision
237
 
        :param roundtrip: Whether to store roundtripping information.
238
 
        :param verifiers: Verifiers info
239
237
        :return dulwich.objects.Commit represent the revision:
240
238
        """
241
239
        from dulwich.objects import Commit
243
241
        commit.tree = tree_sha
244
242
        if roundtrip:
245
243
            metadata = BzrGitRevisionMetadata()
246
 
            metadata.verifiers = verifiers
247
244
        else:
248
245
            metadata = None
249
246
        parents = []
311
308
    def import_commit(self, commit, lookup_parent_revid):
312
309
        """Convert a git commit to a bzr revision.
313
310
 
314
 
        :return: a `bzrlib.revision.Revision` object, foreign revid and a
315
 
            testament sha1
 
311
        :return: a `bzrlib.revision.Revision` object and a 
 
312
            dictionary of path -> file ids
316
313
        """
317
314
        if commit is None:
318
315
            raise AssertionError("Commit object can't be None")
351
348
        rev.timezone = commit.commit_timezone
352
349
        if rev.git_metadata is not None:
353
350
            md = rev.git_metadata
354
 
            roundtrip_revid = md.revision_id
 
351
            if md.revision_id:
 
352
                rev.revision_id = md.revision_id
355
353
            if md.explicit_parent_ids:
356
354
                rev.parent_ids = md.explicit_parent_ids
357
355
            rev.properties.update(md.properties)
358
 
            verifiers = md.verifiers
359
 
        else:
360
 
            roundtrip_revid = None
361
 
            verifiers = {}
362
 
        return rev, roundtrip_revid, verifiers
 
356
        return rev
363
357
 
364
358
    def get_fileid_map(self, lookup_object, tree_sha):
365
359
        """Obtain a fileid map for a particular tree.
407
401
        return ret
408
402
 
409
403
    def import_commit(self, commit, lookup_parent_revid):
410
 
        rev, roundtrip_revid, verifiers = super(BzrGitMappingExperimental, self).import_commit(commit, lookup_parent_revid)
 
404
        rev, file_ids = super(BzrGitMappingExperimental, self).import_commit(commit, lookup_parent_revid)
411
405
        rev.properties['converted_revision'] = "git %s\n" % commit.id
412
 
        return rev, roundtrip_revid, verifiers
 
406
        return rev, file_ids
413
407
 
414
408
 
415
409
class GitMappingRegistry(VcsMappingRegistry):
581
575
        self.mapping = mapping
582
576
 
583
577
    def lookup_file_id(self, path):
584
 
        assert type(path) is str
585
578
        try:
586
 
            file_id = self.file_ids[path]
 
579
            return self.file_ids[path]
587
580
        except KeyError:
588
 
            file_id = self.mapping.generate_file_id(path)
589
 
        assert type(file_id) is str
590
 
        return file_id
 
581
            return self.mapping.generate_file_id(path)
591
582
 
592
583
    def lookup_path(self, file_id):
593
584
        if self.paths is None:
595
586
            for k, v in self.file_ids.iteritems():
596
587
                self.paths[v] = k
597
588
        try:
598
 
            path = self.paths[file_id]
 
589
            return self.paths[file_id]
599
590
        except KeyError:
600
591
            return self.mapping.parse_file_id(file_id)
601
 
        else:
602
 
            assert type(path) is str
603
 
            return path