Browse Source

git-gui: Fix commit encoding handling.

Commits without an encoding header are supposed to
be encoded in utf8. While this apparently hasn't always
been the case, currently it is the active convention, so
it is better to follow it; otherwise people who have to
use commitEncoding on their machines are unable to read
utf-8 commits made by others.

I also think that it is preferrable to display the warning
about an unsupported value of commitEncoding more prominently,
because this condition may lead to surprising behavior and,
eventually, to loss of data.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
maint
Alexander Gavrilov 16 years ago committed by Shawn O. Pearce
parent
commit
3ac31e4451
  1. 5
      lib/blame.tcl
  2. 7
      lib/commit.tcl

5
lib/blame.tcl

@ -940,9 +940,8 @@ method _showcommit {cur_w lno} {
catch { catch {
set fd [git_read cat-file commit $cmit] set fd [git_read cat-file commit $cmit]
fconfigure $fd -encoding binary -translation lf fconfigure $fd -encoding binary -translation lf
if {[catch {set enc $repo_config(i18n.commitencoding)}]} { # By default commits are assumed to be in utf-8
set enc utf-8 set enc utf-8
}
while {[gets $fd line] > 0} { while {[gets $fd line] > 0} {
if {[string match {encoding *} $line]} { if {[string match {encoding *} $line]} {
set enc [string tolower [string range $line 9 end]] set enc [string tolower [string range $line 9 end]]

7
lib/commit.tcl

@ -27,9 +27,8 @@ You are currently in the middle of a merge that has not been fully completed. Y
if {[catch { if {[catch {
set fd [git_read cat-file commit $curHEAD] set fd [git_read cat-file commit $curHEAD]
fconfigure $fd -encoding binary -translation lf fconfigure $fd -encoding binary -translation lf
if {[catch {set enc $repo_config(i18n.commitencoding)}]} { # By default commits are assumed to be in utf-8
set enc utf-8 set enc utf-8
}
while {[gets $fd line] > 0} { while {[gets $fd line] > 0} {
if {[string match {parent *} $line]} { if {[string match {parent *} $line]} {
lappend parents [string range $line 7 end] lappend parents [string range $line 7 end]
@ -208,7 +207,7 @@ A good commit message has the following format:
if {$use_enc ne {}} { if {$use_enc ne {}} {
fconfigure $msg_wt -encoding $use_enc fconfigure $msg_wt -encoding $use_enc
} else { } else {
puts stderr [mc "warning: Tcl does not support encoding '%s'." $enc] error_popup [mc "warning: Tcl does not support encoding '%s'." $enc]
fconfigure $msg_wt -encoding utf-8 fconfigure $msg_wt -encoding utf-8
} }
puts $msg_wt $msg puts $msg_wt $msg

Loading…
Cancel
Save