/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

Cope with non-ascii characters in git gpg signatures.

Merged from https://code.launchpad.net/~jelmer/brz/git-sig-base64/+merge/381348

Show diffs side-by-side

added added

removed removed

Lines of Context:
332
332
            commit.author_timezone = commit.commit_timezone
333
333
        if u'git-gpg-signature' in rev.properties:
334
334
            commit.gpgsig = rev.properties[u'git-gpg-signature'].encode(
335
 
                'ascii')
 
335
                'utf-8')
 
336
        if u'git-gpg-signature-b64' in rev.properties:
 
337
            commit.gpgsig = base64.b64decode(rev.properties[u'git-gpg-signature-b64'])
336
338
        commit.message = self._encode_commit_message(rev, rev.message,
337
339
                                                     encoding)
338
340
        if not isinstance(commit.message, bytes):
345
347
            mapping_properties = set(
346
348
                [u'author', u'author-timezone', u'author-timezone-neg-utc',
347
349
                 u'commit-timezone-neg-utc', u'git-implicit-encoding',
348
 
                 u'git-gpg-signature', u'git-explicit-encoding',
 
350
                 u'git-gpg-signature', u'git-gpg-signature-b64',
 
351
                 u'git-explicit-encoding',
349
352
                 u'author-timestamp', u'file-modes'])
350
353
            for k, v in viewitems(rev.properties):
351
354
                if k not in mapping_properties:
427
430
        if commit._commit_timezone_neg_utc:
428
431
            rev.properties[u'commit-timezone-neg-utc'] = ""
429
432
        if commit.gpgsig:
430
 
            rev.properties[u'git-gpg-signature'] = commit.gpgsig.decode(
431
 
                'ascii')
 
433
            try:
 
434
                rev.properties[u'git-gpg-signature'] = commit.gpgsig.decode(
 
435
                    'utf-8')
 
436
            except UnicodeDecodeError:
 
437
                rev.properties[u'git-gpg-signature-b64'] = base64.b64encode(
 
438
                    commit.gpgsig)
432
439
        if commit.mergetag:
433
440
            for i, tag in enumerate(commit.mergetag):
434
441
                rev.properties[u'git-mergetag-%d' % i] = tag.as_raw_string()