diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2008-01-23 00:37:10 -0500 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2008-09-24 12:48:31 -0700 |
commit | 1ffca60f0b0395e1e593e64d66e7ed3c47d8517e (patch) | |
tree | f7f1c65e1908661cf12ea33ecd92e116e19fd090 /git-gui.sh | |
parent | 2cd1fd1f6da5243226779acb17be9132d53ec4a9 (diff) | |
download | git-1ffca60f0b0395e1e593e64d66e7ed3c47d8517e.tar.gz git-1ffca60f0b0395e1e593e64d66e7ed3c47d8517e.tar.xz |
git-gui: Use gitattribute "encoding" for file content display
Most folks using git-gui on internationalized files have complained
that it doesn't recognize UTF-8 correctly. In the past we have just
ignored the problem and showed the file contents as binary/US-ASCII,
which is wrong no matter how you look at it.
This really should be a per-file attribute, managed by .gitattributes,
so we now pull the "encoding" attribute data for the given path from
the .gitattributes (if available) and use that, falling back to UTF-8
if the attributes are unavailable, git-check-attr is broken, or an
encoding for this path not specified.
We apply the encoding anytime we show file content, which currently
is limited to only the diff viewer and the blame viewer.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'git-gui.sh')
-rwxr-xr-x | git-gui.sh | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/git-gui.sh b/git-gui.sh index cb0fcac99..4a762355d 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -521,6 +521,19 @@ proc kill_file_process {fd} { } } +proc gitattr {path attr default} { + if {[catch {set r [git check-attr $attr -- $path]}]} { + set r unspecified + } else { + set r [join [lrange [split $r :] 2 end] :] + regsub {^ } $r {} r + } + if {$r eq {unspecified}} { + return $default + } + return $r +} + proc sq {value} { regsub -all ' $value "'\\''" value return "'$value'" |