@matheusbsbs / matheus-bagliano / commits / 696235c6c1
Fork 0

git-gui: Assume `blame --incremental` output is in UTF-8

Most commits have author name encoded in UTF-8, but the incremental blame output dumps raw bytes and doesn't give us the encoding header from the commit. Rather than fixing up tooltip data after we have viewed that particular commit in the blame viewer we can assume all names are in UTF-8. This is still going to cause problems when the author name is not encoded in UTF-8, but the only (efficient) way to solve that is to add an "encoding" header to the blame --incremental mode output, as otherwise we need to run `git cat-file commit $sha1` for each and every commit identified and that would be horribly expensive on any platform. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

Shawn O. Pearce committed Jan 23, 2008 at 00:39 UTC 696235c6c1c85085fd55ff849663d44c51464e69
1 file changed +1 -7
lib/blame.tcl
+1 -7
@@ -511,7 +511,7 @@ method _exec_blame {cur_w cur_d options cur_s} {
511 }
512 lappend options -- $path
513 set fd [eval git_read --nice blame $options]
514 - fconfigure $fd -blocking 0 -translation lf -encoding binary
514 + fconfigure $fd -blocking 0 -translation lf -encoding utf-8
515 fileevent $fd readable [cb _read_blame $fd $cur_w $cur_d]
516 set current_fd $fd
517 set blame_lines 0
@@ -884,12 +884,6 @@ method _showcommit {cur_w lno} {
884 set enc [tcl_encoding $enc]
885 if {$enc ne {}} {
886 set msg [encoding convertfrom $enc $msg]
887 - set author_name [encoding convertfrom $enc $author_name]
888 - set committer_name [encoding convertfrom $enc $committer_name]
889 - set header($cmit,author) $author_name
890 - set header($cmit,committer) $committer_name
891 - set header($cmit,summary) \
892 - [encoding convertfrom $enc $header($cmit,summary)]
887 }
888 set msg [string trim $msg]
889 }