gitk: Fix commit encoding support
authorAlexander Gavrilov <angavrilov@gmail.com>
Sun, 9 Nov 2008 15:06:07 +0000 (18:06 +0300)
committerPaul Mackerras <paulus@samba.org>
Thu, 13 Nov 2008 11:20:25 +0000 (22:20 +1100)
commit590915dab8aaf464f5819c4ccec7941c3490e3ce
tree006f050d93b3c4d3e5a9e4aa72f983331b38e9db
parente7d640086e0d3eb332542da287c40262c6eae207
gitk: Fix commit encoding support

This commit fixes two problems with commit encodings:

1) git-log actually uses i18n.logoutputencoding to generate
   its output, and falls back to i18n.commitencoding only
   when that option is not set.  Thus, gitk should use its
   value to read the results, if available.

2) The readcommit function did not process encodings at all.
   This led to randomly appearing misconverted commits if
   the commit encoding differed from the current locale.

Now commit messages should be displayed correctly, except
when logoutputencoding is set to an encoding that cannot
represent charecters in the message.  For example, it is
impossible to convert Japanese characters from Shift-JIS
to CP-1251 (although the reverse conversion works).

The reason for using git log to read the commit and then getting
Tcl to convert its output is that is essentially what happens in
the normal path through getcommitlines, hence there is less chance
for unintended differences in how commits are processed in
getcommitlines and do_readcommit.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
gitk