From: Alex Riesen <raa.lkml@gmail.com>
To: git@vger.kernel.org
Cc: Paul Mackerras <paulus@samba.org>, Junio C Hamano <junkio@cox.net>
Subject: [RESEND] [PATCH] Fix tree mode of the file list for files containing curly brackets
Date: Sun, 27 Apr 2008 12:57:00 +0200 [thread overview]
Message-ID: <20080427105700.GA28896@steel.home> (raw)
In-Reply-To: <20080314214904.GA5914@steel.home>
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@gmail.com>
---
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
next prev parent reply other threads:[~2008-04-27 10:57 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-14 21:49 Fix tree mode of the file list for files containing curly brackets Alex Riesen
2008-03-14 21:58 ` [PATCH] " Alex Riesen
2008-04-27 10:57 ` Alex Riesen [this message]
2008-04-27 11:53 ` [RESEND] " Paul Mackerras
2008-04-27 16:51 ` Alex Riesen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080427105700.GA28896@steel.home \
--to=raa.lkml@gmail.com \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).