Skip to content

Commit

Permalink
gitk: Cope with unmerged files in local changes
Browse files Browse the repository at this point in the history
This modifies gettreediffline so that it when we get both a "U" line
and an "M" line for the same file in the output from git diff-files
or git diff-index --cached (used when the user clicks on a fake commit)
we don't add the same filename to the treediff list twice.

This also makes getblobdiffline recognize the "* Unmerged path ..."
lines we get when we ask for the actual diffs, and makes a tiny
optimization in makediffhdr.

Signed-off-by: Paul Mackerras <[email protected]>
  • Loading branch information
paulusmack committed Nov 4, 2008
1 parent fc4977e commit 48a81b7
Showing 1 changed file with 17 additions and 3 deletions.
20 changes: 17 additions & 3 deletions gitk
Original file line number Diff line number Diff line change
Expand Up @@ -6854,8 +6854,10 @@ proc gettreediffline {gdtf ids} {
set file [lindex $file 0]
}
set file [encoding convertfrom $file]
lappend treediff $file
lappend sublist $file
if {$file ne [lindex $treediff end]} {
lappend treediff $file
lappend sublist $file
}
}
}
if {$perfile_attrs} {
Expand Down Expand Up @@ -6960,7 +6962,7 @@ proc makediffhdr {fname ids} {
if {$i >= 0} {
setinlist difffilestart $i $curdiffstart
}
set ctext_file_names [lreplace $ctext_file_names end end $fname]
lset ctext_file_names end $fname
set l [expr {(78 - [string length $fname]) / 2}]
set pad [string range "----------------------------------------" 1 $l]
$ctext insert $curdiffstart "$pad $fname $pad" filesep
Expand Down Expand Up @@ -7033,6 +7035,18 @@ proc getblobdiffline {bdf ids} {
}
makediffhdr $fname $ids

} elseif {![string compare -length 16 "* Unmerged path " $line]} {
set fname [encoding convertfrom [string range $line 16 end]]
$ctext insert end "\n"
set curdiffstart [$ctext index "end - 1c"]
lappend ctext_file_names $fname
lappend ctext_file_lines [lindex [split $curdiffstart "."] 0]
$ctext insert end "$line\n" filesep
set i [lsearch -exact $treediffs($ids) $fname]
if {$i >= 0} {
setinlist difffilestart $i $curdiffstart
}

} elseif {![string compare -length 2 "@@" $line]} {
regexp {^@@+} $line ats
set line [encoding convertfrom $diffencoding $line]
Expand Down

0 comments on commit 48a81b7

Please sign in to comment.