[PATCH v4 2/3] gitk: do not parse " >" context as submodule change
- From
Thomas Rast <trast@student.ethz.ch>
- Date
- Apr 14, 2010, 15:59 UTC
- Message-ID
- <5531510bfb94997f729a894a0b5a3158177a9add.1271260308.git.trast@student.ethz.ch>
- In-Reply-To
- <cover.1271260308.git.trast@student.ethz.ch>
Since 5c838d2 (gitk: Use the --submodule option for displaying diffs when available, 2009-10-28) gitk erroneously matches " >" and " <" at the beginning of a line in the submodule code even if we're in the diff text section and the lines should be treated as context.
Fix by (ab)using the $diffinhdr variable also in the 'Submodule...' case, and move the " >"/" <" specific code inside the $diffinhdr test. The existing code will set $diffinhdr to 0 when it hits a "+++", so that it is always 0 when we can hit a context line. --- gitk | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/gitk b/gitk index 1f36a3e..7b8799e 100755 --- a/gitk +++ b/gitk @@ -7688,12 +7688,8 @@ proc getblobdiffline {bdf ids} { lappend ctext_file_lines $fname makediffhdr $fname $ids $ctext insert end "\n$line\n" filesep - } elseif {![string compare -length 3 " >" $line]} { - set line [encoding convertfrom $diffencoding $line] - $ctext insert end "$line\n" dresult - } elseif {![string compare -length 3 " <" $line]} { - set line [encoding convertfrom $diffencoding $line] - $ctext insert end "$line\n" d0 + # pretend we're in a file header to correctly parse " [><]" + set diffinhdr 1 } elseif {$diffinhdr} { if {![string compare -length 12 "rename from " $line]} { set fname [string range $line [expr 6 + [string first " from " $line] ] end] @@ -7712,6 +7708,14 @@ proc getblobdiffline {bdf ids} { set fname [lindex $fname 0] } makediffhdr $fname $ids + } elseif {![string compare -length 3 " >" $line]} { + set line [encoding convertfrom $diffencoding $line] + $ctext insert end "$line\n" dresult + continue + } elseif {![string compare -length 3 " <" $line]} { + set line [encoding convertfrom $diffencoding $line] + $ctext insert end "$line\n" d0 + continue } elseif {[string compare -length 3 $line "---"] == 0} { # do nothing continue
-- 1.7.1.rc1.260.g41ab89