/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

Fix branch cloning.

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
 
 
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
 
36
73
 
37
74
class BzrGitMappingExperimental(BzrGitMapping):
38
75
    revid_prefix = 'git-experimental'