As far as I could understand the online documentation the [lindex ...] thing expects an array, which a string produced by git-ls-tree is not. So [split ...] it first, to get a real Tcl string-array. For instance: $ git init $ date >file $ git add . && git commit -m1 $ git mv file '{a-b}.a.b' $ git commit -m2 $ git mv file '{a-b}.a.b{' $ git commit -m3 $ git mv file '{a-b}.a .b{' $ git commit -m4 $ gitk Now switch the file list from "Patch" to "Tree": list element in braces followed by ".a.b" instead of space list element in braces followed by ".a.b" instead of space while executing "lindex $line 1" (procedure "gettreeline" line 9) invoked from within "gettreeline file11 4b155a05282eeccd7c8fd381b22ed442efde2850" ("eval" body line 1) invoked from within "eval $script" (procedure "dorunq" line 9) invoked from within "dorunq" ("after" script) Signed-off-by: Alex Riesen <raa.lkml@xxxxxxxxx> --- Alex Riesen, Fri, Mar 14, 2008 22:49:04 +0100: > + set la [split "$line" " \t"] > + if {$diffids ne $nullid2 && [lindex $la 1] ne "blob"} continue > + set sha1 [lindex $la 2] > + set fname [lindex $la 3] And, as I actually do know nothing about Tcl, it does not work for files with spaces. The last lindex is obviuosly wrong, it breaks names with whitespaces. I rebased the patch on current master. gitk-git/gitk | 12 ++++-------- 1 files changed, 4 insertions(+), 8 deletions(-) diff --git a/gitk-git/gitk b/gitk-git/gitk index 9a4d9c4..5599878 100644 --- a/gitk-git/gitk +++ b/gitk-git/gitk @@ -4992,14 +4992,10 @@ 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] - if {[string index $fname 0] eq "\""} { - set fname [lindex $fname 0] - } + set la [split "$line" " \t"] + if {$diffids ne $nullid2 && [lindex $la 1] ne "blob"} continue + set sha1 [lindex $la 2] + set fname [lindex [split "$line" "\t"] 1] lappend treeidlist($id) $sha1 } lappend treefilelist($id) $fname -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html