/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

Cope with newer *system* dulwich

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
"""Converters, etc for going between Bazaar and Git ids."""
18
18
 
19
 
from bzrlib import errors
20
 
from bzrlib.plugins.git import foreign
 
19
from bzrlib import errors, foreign
 
20
from bzrlib.inventory import ROOT_ID
 
21
from bzrlib.foreign import (
 
22
        ForeignRevision,
 
23
        )
 
24
 
 
25
 
 
26
def escape_file_id(file_id):
 
27
    return file_id.replace('_', '__').replace(' ', '_s')
 
28
 
 
29
 
 
30
def unescape_file_id(file_id):
 
31
    return file_id.replace("_s", " ").replace("__", "_")
 
32
 
21
33
 
22
34
class BzrGitMapping(foreign.VcsMapping):
23
35
    """Class that maps between Git and Bazaar semantics."""
33
45
            raise errors.InvalidRevisionId(bzr_rev_id, self)
34
46
        return bzr_rev_id[len(self.revid_prefix)+1:]
35
47
 
36
 
 
37
 
class BzrGitMappingExperimental(BzrGitMapping):
 
48
    def show_foreign_revid(self, foreign_revid):
 
49
        return { "git commit": foreign_revid }
 
50
 
 
51
    def generate_file_id(self, path):
 
52
        if path == "":
 
53
            return ROOT_ID
 
54
        return escape_file_id(path.encode('utf-8'))
 
55
 
 
56
    def import_commit(self, commit):
 
57
        """Convert a git commit to a bzr revision.
 
58
 
 
59
        :return: a `bzrlib.revision.Revision` object.
 
60
        """
 
61
        if commit is None:
 
62
            raise AssertionError("Commit object can't be None")
 
63
        rev = ForeignRevision(commit.id, self, self.revision_id_foreign_to_bzr(commit.id))
 
64
        rev.parent_ids = tuple([self.revision_id_foreign_to_bzr(p) for p in commit.parents])
 
65
        rev.message = commit.message.decode("utf-8", "replace")
 
66
        rev.committer = str(commit.committer).decode("utf-8", "replace")
 
67
        if commit.committer != commit.author:
 
68
            rev.properties['author'] = str(commit.author).decode("utf-8", "replace")
 
69
        rev.timestamp = commit.commit_time
 
70
        rev.timezone = 0
 
71
        return rev
 
72
 
 
73
 
 
74
class BzrGitMappingv1(BzrGitMapping):
 
75
    revid_prefix = 'git-v1'
 
76
    experimental = False
 
77
 
 
78
 
 
79
class BzrGitMappingExperimental(BzrGitMappingv1):
38
80
    revid_prefix = 'git-experimental'
39
81
    experimental = True
40
82
 
41
83
 
42
 
default_mapping = BzrGitMappingExperimental()
 
84
default_mapping = BzrGitMappingv1()