]> git.ipfire.org Git - thirdparty/git.git/commitdiff
git gui: fix branch name encoding error
authorKazuhiro Kato <kato-k@ksysllc.co.jp>
Sat, 7 Dec 2019 00:29:09 +0000 (00:29 +0000)
committerPratyush Yadav <me@yadavpratyush.com>
Mon, 9 Dec 2019 21:13:55 +0000 (02:43 +0530)
After "git checkout -b '漢字'" to create a branch with UTF-8 character
in it, "git gui" shows the branch name incorrectly, as it forgets to
turn the bytes read from the "git for-each-ref" and read from "HEAD"
file into Unicode characters.

Signed-off-by: Kazuhiro Kato <kato-k@ksysllc.co.jp>
Signed-off-by: Pratyush Yadav <me@yadavpratyush.com>
git-gui.sh
lib/branch.tcl

index 6dcf6551b61c46a0889464d23bc9881ad79daedb..c1be733e3ef75ea0785dac876194ee76857233b8 100755 (executable)
@@ -684,6 +684,7 @@ proc load_current_branch {} {
        global current_branch is_detached
 
        set fd [open [gitdir HEAD] r]
+       fconfigure $fd -translation binary -encoding utf-8
        if {[gets $fd ref] < 1} {
                set ref {}
        }
index 777eeb79c1355ec49ce175cc5c33a13df6e41c97..8b0c4858890f11cf0e3f31536b584e0596f3aba0 100644 (file)
@@ -8,6 +8,7 @@ proc load_all_heads {} {
        set rh_len [expr {[string length $rh] + 1}]
        set all_heads [list]
        set fd [git_read for-each-ref --format=%(refname) $rh]
+       fconfigure $fd -translation binary -encoding utf-8
        while {[gets $fd line] > 0} {
                if {!$some_heads_tracking || ![is_tracking_branch $line]} {
                        lappend all_heads [string range $line $rh_len end]
@@ -24,6 +25,7 @@ proc load_all_tags {} {
                --sort=-taggerdate \
                --format=%(refname) \
                refs/tags]
+       fconfigure $fd -translation binary -encoding utf-8
        while {[gets $fd line] > 0} {
                if {![regsub ^refs/tags/ $line {} name]} continue
                lappend all_tags $name