diff options
author | Johannes Sixt <johannes.sixt@telecom.at> | 2007-08-16 14:32:29 +0200 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-08-17 17:58:45 +1000 |
commit | d1cb298b0b74972cc27c789e4c9ce6f324f25113 (patch) | |
tree | 652022c564613bb32b50150d7ca90ea86bbff484 | |
parent | d7b16113a128ff04134cec4a8e241cf9cd0a49a2 (diff) | |
download | git-d1cb298b0b74972cc27c789e4c9ce6f324f25113.tar.gz git-d1cb298b0b74972cc27c789e4c9ce6f324f25113.tar.xz |
[PATCH] gitk: Handle 'copy from' and 'copy to' in diff headers.
If a commit contained a copy operation, the file name was not correctly
determined, and the corresponding part of the patch could not be
navigated to from the list of files.
Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Paul Mackerras <paulus@samba.org>
-rwxr-xr-x | gitk | 14 |
1 files changed, 8 insertions, 6 deletions
@@ -5146,8 +5146,8 @@ proc getblobdiffline {bdf ids} { # the middle char will be a space, and the two bits either # side will be a/name and b/name, or "a/name" and "b/name". # If the name has changed we'll get "rename from" and - # "rename to" lines following this, and we'll use them - # to get the filenames. + # "rename to" or "copy from" and "copy to" lines following this, + # and we'll use them to get the filenames. # This complexity is necessary because spaces in the filename(s) # don't get escaped. set l [string length $line] @@ -5171,8 +5171,9 @@ proc getblobdiffline {bdf ids} { set diffinhdr 0 } elseif {$diffinhdr} { - if {![string compare -length 12 "rename from " $line]} { - set fname [string range $line 12 end] + if {![string compare -length 12 "rename from " $line] || + ![string compare -length 10 "copy from " $line]} { + set fname [string range $line [expr 6 + [string first " from " $line] ] end] if {[string index $fname 0] eq "\""} { set fname [lindex $fname 0] } @@ -5180,8 +5181,9 @@ proc getblobdiffline {bdf ids} { if {$i >= 0} { setinlist difffilestart $i $curdiffstart } - } elseif {![string compare -length 10 $line "rename to "]} { - set fname [string range $line 10 end] + } elseif {![string compare -length 10 $line "rename to "] || + ![string compare -length 8 $line "copy to "]} { + set fname [string range $line [expr 4 + [string first " to " $line] ] end] if {[string index $fname 0] eq "\""} { set fname [lindex $fname 0] } |