When accessing a repository which have signed commits and where the name of the author contains non ASCII characters you will get an UnicodeEncodeError when trying to get the log if signature display is enabled.
The problem is in bzrlib/log.py in the function "format_signature_validity" which mixes a constant non-unicode string with a unicode string which is given as argument for the format function.
if you change
-------------------------
if result[0] == gpg.SIGNATURE_VALID:
return "valid signature from {0}".format(result[1])
if result[0] == gpg.SIGNATURE_KEY_MISSING:
return "unknown key {0}".format(result[1])
-------------------------
to
-------------------------
if result[0] == gpg.SIGNATURE_VALID:
return u"valid signature from {0}".format(result[1])
if result[0] == gpg.SIGNATURE_KEY_MISSING:
return u"unknown key {0}".format(result[1])
-------------------------
everything works fine. This was tested with bazaar 2.5.1 in Ubuntu but the error also exists in lp:bzr
bzr version
=========
Bazaar (bzr) 2.5.1
Python interpreter: /usr/bin/python 2.7.3
Python standard library: /usr/lib/python2.7
Platform: Linux-3.2.0-29-generic-x86_64-with-Ubuntu-12.04-precise
bzrlib: /usr/lib/python2.7/dist-packages/bzrlib
Backtrace from bzr.log
===================
Mi 2012-08-15 14:35:26 +0200
0.055 bazaar version: 2.5.1
0.055 bzr arguments: [u'qlog']
0.057 looking for plugins in /home/thomas/.bazaar/plugins
0.063 looking for plugins in /usr/lib/python2.7/dist-packages/bzrlib/plugins
0.098 encoding stdout as sys.stdout encoding 'UTF-8'
0.315 opening working tree '/home/thomas/annis/restr_vis'
7.913 Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/bzrlib/plugins/qbzr/lib/util.py", line 908, in run_in_loading_queue
f(*args, **kargs)
File "/usr/lib/python2.7/dist-packages/bzrlib/plugins/qbzr/lib/uifactory.py", line 32, in decorate
r = f(*args, **kargs)
File "/usr/lib/python2.7/dist-packages/bzrlib/plugins/qbzr/lib/revisionmessagebrowser.py", line 365, in update_selection
revids, self.log_list.log_model.graph_viz.get_repo_revids)
File "/usr/lib/python2.7/dist-packages/bzrlib/plugins/qbzr/lib/revisionmessagebrowser.py", line 149, in set_display_revids
pass_prev_loaded_rev=True)
File "/usr/lib/python2.7/dist-packages/bzrlib/plugins/qbzr/lib/lazycachedrevloader.py", line 53, in load_revisions
revisions_loaded(return_revisions, False)
File "/usr/lib/python2.7/dist-packages/bzrlib/plugins/qbzr/lib/revisionmessagebrowser.py", line 204, in revisions_loaded
cached_revisions[revid].repository)
File "/usr/lib/python2.7/dist-packages/bzrlib/log.py", line 346, in format_signature_validity
return "valid signature from {0}".format(result[1])
UnicodeEncodeError: 'ascii' codec can't encode character u'\xdf' in position 12: ordinal not in range(128)
When accessing a repository which have signed commits and where the name of the author contains non ASCII characters you will get an UnicodeEncodeError when trying to get the log if signature display is enabled.
E.g. you can try
bzr log --signatures lp:~pixeldrama/annis/restr_vis -r 973..975
or
bzr qlog lp:~pixeldrama/annis/restr_vis
(click on the revision 975 to get the error)
The problem is in bzrlib/log.py in the function "format_ signature_ validity" which mixes a constant non-unicode string with a unicode string which is given as argument for the format function.
if you change
------- ------- ------- ---- VALID: result[ 1]) KEY_MISSING: result[ 1]) ------- ------- ----
if result[0] == gpg.SIGNATURE_
return "valid signature from {0}".format(
if result[0] == gpg.SIGNATURE_
return "unknown key {0}".format(
-------
to
------- ------- ------- ---- VALID: result[ 1]) KEY_MISSING: result[ 1]) ------- ------- ----
if result[0] == gpg.SIGNATURE_
return u"valid signature from {0}".format(
if result[0] == gpg.SIGNATURE_
return u"unknown key {0}".format(
-------
everything works fine. This was tested with bazaar 2.5.1 in Ubuntu but the error also exists in lp:bzr
bzr version 2.0-29- generic- x86_64- with-Ubuntu- 12.04-precise python2. 7/dist- packages/ bzrlib
=========
Bazaar (bzr) 2.5.1
Python interpreter: /usr/bin/python 2.7.3
Python standard library: /usr/lib/python2.7
Platform: Linux-3.
bzrlib: /usr/lib/
Backtrace from bzr.log
===================
Mi 2012-08-15 14:35:26 +0200 .bazaar/ plugins python2. 7/dist- packages/ bzrlib/ plugins thomas/ annis/restr_ vis' python2. 7/dist- packages/ bzrlib/ plugins/ qbzr/lib/ util.py" , line 908, in run_in_ loading_ queue python2. 7/dist- packages/ bzrlib/ plugins/ qbzr/lib/ uifactory. py", line 32, in decorate python2. 7/dist- packages/ bzrlib/ plugins/ qbzr/lib/ revisionmessage browser. py", line 365, in update_selection list.log_ model.graph_ viz.get_ repo_revids) python2. 7/dist- packages/ bzrlib/ plugins/ qbzr/lib/ revisionmessage browser. py", line 149, in set_display_revids prev_loaded_ rev=True) python2. 7/dist- packages/ bzrlib/ plugins/ qbzr/lib/ lazycachedrevlo ader.py" , line 53, in load_revisions loaded( return_ revisions, False) python2. 7/dist- packages/ bzrlib/ plugins/ qbzr/lib/ revisionmessage browser. py", line 204, in revisions_loaded revisions[ revid]. repository) python2. 7/dist- packages/ bzrlib/ log.py" , line 346, in format_ signature_ validity result[ 1])
0.055 bazaar version: 2.5.1
0.055 bzr arguments: [u'qlog']
0.057 looking for plugins in /home/thomas/
0.063 looking for plugins in /usr/lib/
0.098 encoding stdout as sys.stdout encoding 'UTF-8'
0.315 opening working tree '/home/
7.913 Traceback (most recent call last):
File "/usr/lib/
f(*args, **kargs)
File "/usr/lib/
r = f(*args, **kargs)
File "/usr/lib/
revids, self.log_
File "/usr/lib/
pass_
File "/usr/lib/
revisions_
File "/usr/lib/
cached_
File "/usr/lib/
return "valid signature from {0}".format(
UnicodeEncodeError: 'ascii' codec can't encode character u'\xdf' in position 12: ordinal not in range(128)