Skip to content

Commit

Permalink
gitk: Fix handling of tree file list with special chars in names
Browse files Browse the repository at this point in the history
Alex Riesen pointed out that displaying a commit in 'tree' mode fails
if some files have names with special characters such as '{' or '}' in
them, due to the fact that we treat the line returned from git ls-tree
as a Tcl list at one point.

This fixes it by doing what I originally intended but didn't quite
get right.  We split the line from git ls-tree at the first tab and
treat the part before the tab as a list (which is OK since it doesn't
have special characters in it) and the part after the tab as the
filename.

Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Paul Mackerras committed Apr 27, 2008
1 parent 80dd7b4 commit f31fa2c
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions gitk
Original file line number Diff line number Diff line change
Expand Up @@ -4992,11 +4992,12 @@ proc gettreeline {gtf id} {
if {$diffids eq $nullid} {
set fname $line
} else {
if {$diffids ne $nullid2 && [lindex $line 1] ne "blob"} continue
set i [string first "\t" $line]
if {$i < 0} continue
set sha1 [lindex $line 2]
set fname [string range $line [expr {$i+1}] end]
set line [string range $line 0 [expr {$i-1}]]
if {$diffids ne $nullid2 && [lindex $line 1] ne "blob"} continue
set sha1 [lindex $line 2]
if {[string index $fname 0] eq "\""} {
set fname [lindex $fname 0]
}
Expand Down

0 comments on commit f31fa2c

Please sign in to comment.