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

  • Committer: Jelmer Vernooij
  • Date: 2019-10-28 01:38:39 UTC
  • mto: This revision was merged to the branch mainline in revision 7412.
  • Revision ID: jelmer@jelmer.uk-20191028013839-q63zzm4yr0id9b3o
Allow unknown extras in git commits when just inspecting revisions, rather than importing.

Show diffs side-by-side

added added

removed removed

Lines of Context:
46
46
    )
47
47
from .errors import (
48
48
    NoPushSupport,
49
 
    UnknownCommitExtra,
50
 
    UnknownMercurialCommitExtra,
51
49
    )
52
50
from .hg import (
53
51
    format_hg_metadata,
73
71
ROOT_ID = b"TREE_ROOT"
74
72
 
75
73
 
 
74
class UnknownCommitExtra(errors.BzrError):
 
75
    _fmt = "Unknown extra fields in %(object)r: %(fields)r."
 
76
 
 
77
    def __init__(self, object, fields):
 
78
        errors.BzrError.__init__(self)
 
79
        self.object = object
 
80
        self.fields = ",".join(fields)
 
81
 
 
82
 
 
83
class UnknownMercurialCommitExtra(errors.BzrError):
 
84
    _fmt = "Unknown mercurial extra fields in %(object)r: %(fields)r."
 
85
 
 
86
    def __init__(self, object, fields):
 
87
        errors.BzrError.__init__(self)
 
88
        self.object = object
 
89
        self.fields = b",".join(fields)
 
90
 
 
91
 
76
92
def escape_file_id(file_id):
77
93
    file_id = file_id.replace(b'_', b'__')
78
94
    file_id = file_id.replace(b' ', b'_s')
370
386
                return metadata.revision_id
371
387
        return self.revision_id_foreign_to_bzr(commit.id)
372
388
 
373
 
    def import_commit(self, commit, lookup_parent_revid):
 
389
    def import_commit(self, commit, lookup_parent_revid, strict=True):
374
390
        """Convert a git commit to a bzr revision.
375
391
 
376
392
        :return: a `breezy.revision.Revision` object, foreign revid and a
444
460
                extra_lines.append(k + b' ' + v + b'\n')
445
461
            elif k == HG_EXTRA:
446
462
                hgk, hgv = v.split(b':', 1)
447
 
                if hgk not in (HG_EXTRA_AMEND_SOURCE, ):
 
463
                if hgk not in (HG_EXTRA_AMEND_SOURCE, ) and strict:
448
464
                    raise UnknownMercurialCommitExtra(commit, [hgk])
449
465
                extra_lines.append(k + b' ' + v + b'\n')
450
466
            else:
451
467
                unknown_extra_fields.append(k)
452
 
        if unknown_extra_fields:
 
468
        if unknown_extra_fields and strict:
453
469
            raise UnknownCommitExtra(
454
470
                commit,
455
471
                [f.decode('ascii', 'replace') for f in unknown_extra_fields])
487
503
        ret += self._generate_git_svn_metadata(rev, encoding)
488
504
        return ret
489
505
 
490
 
    def import_commit(self, commit, lookup_parent_revid):
 
506
    def import_commit(self, commit, lookup_parent_revid, strict=True):
491
507
        rev, roundtrip_revid, verifiers = super(
492
508
            BzrGitMappingExperimental, self).import_commit(
493
 
                commit, lookup_parent_revid)
 
509
                commit, lookup_parent_revid, strict)
494
510
        rev.properties[u'converted_revision'] = "git %s\n" % commit.id
495
511
        return rev, roundtrip_revid, verifiers
496
512