aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Gavrilov <angavrilov@gmail.com>2009-01-24 00:18:13 +0300
committerShawn O. Pearce <spearce@spearce.org>2009-02-01 14:56:54 -0800
commit06569cd5bef7c8e3925bd36870abc083ae7b93f8 (patch)
tree7d7fbe4f5c113925edc71ce4b4736853c9512ef8
parente612120d232a5ef04dcf22fc92741565ebb4d0c8 (diff)
downloadgit-06569cd5bef7c8e3925bd36870abc083ae7b93f8.tar.gz
git-06569cd5bef7c8e3925bd36870abc083ae7b93f8.tar.xz
git-gui: Fix post-commit status with subject in non-locale encoding
As pointed out in msysgit bug #181, when a non-locale encoding is used for commits, post-commit status messages display the subject incorrectly. It happens because the file handle is not properly configured before the subject is read back. This patch fixes it by factoring out the code that is used to setup the output handle into a separate function, and calling it from the reading code. Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com> Acked-by: Robin Rosenberg <robin.rosenberg@gmail.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
-rw-r--r--lib/commit.tcl29
1 files changed, 19 insertions, 10 deletions
diff --git a/lib/commit.tcl b/lib/commit.tcl
index 9cc841059..17aba914a 100644
--- a/lib/commit.tcl
+++ b/lib/commit.tcl
@@ -115,6 +115,23 @@ proc create_new_commit {} {
rescan ui_ready
}
+proc setup_commit_encoding {msg_wt {quiet 0}} {
+ global repo_config
+
+ if {[catch {set enc $repo_config(i18n.commitencoding)}]} {
+ set enc utf-8
+ }
+ set use_enc [tcl_encoding $enc]
+ if {$use_enc ne {}} {
+ fconfigure $msg_wt -encoding $use_enc
+ } else {
+ if {!$quiet} {
+ error_popup [mc "warning: Tcl does not support encoding '%s'." $enc]
+ }
+ fconfigure $msg_wt -encoding utf-8
+ }
+}
+
proc commit_tree {} {
global HEAD commit_type file_states ui_comm repo_config
global pch_error
@@ -200,16 +217,7 @@ A good commit message has the following format:
set msg_p [gitdir GITGUI_EDITMSG]
set msg_wt [open $msg_p w]
fconfigure $msg_wt -translation lf
- if {[catch {set enc $repo_config(i18n.commitencoding)}]} {
- set enc utf-8
- }
- set use_enc [tcl_encoding $enc]
- if {$use_enc ne {}} {
- fconfigure $msg_wt -encoding $use_enc
- } else {
- error_popup [mc "warning: Tcl does not support encoding '%s'." $enc]
- fconfigure $msg_wt -encoding utf-8
- }
+ setup_commit_encoding $msg_wt
puts $msg_wt $msg
close $msg_wt
@@ -362,6 +370,7 @@ A rescan will be automatically started now.
append reflogm " ($commit_type)"
}
set msg_fd [open $msg_p r]
+ setup_commit_encoding $msg_fd 1
gets $msg_fd subject
close $msg_fd
append reflogm {: } $subject