projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
First cut at displaying the diffs for a merge.
[git.git]
/
gitk
diff --git
a/gitk
b/gitk
index
e190ce6
..
2db187c
100755
(executable)
--- a/
gitk
+++ b/
gitk
@@
-1684,13
+1684,25
@@
proc selectline {l} {
$cflist delete 0 end
$cflist insert end "Comments"
$cflist delete 0 end
$cflist insert end "Comments"
- if {$nparents($id) == 1} {
- startdiff [concat $id $parents($id)]
- }
+ startdiff $id $parents($id)
+}
+
+proc startdiff {id vs} {
+ global diffpending diffpindex
+ global diffindex difffilestart seenfile
+ global curdifftag curtagstart
+
+ set diffpending $vs
+ set diffpindex 0
catch {unset seenfile}
catch {unset seenfile}
+ set diffindex 0
+ catch {unset difffilestart}
+ set curdifftag Comments
+ set curtagstart 0.0
+ contdiff [list $id [lindex $vs 0]]
}
}
-proc
star
tdiff {ids} {
+proc
con
tdiff {ids} {
global treediffs diffids treepending
if {![info exists treediffs($ids)]} {
global treediffs diffids treepending
if {![info exists treediffs($ids)]} {
@@
-1712,9
+1724,13
@@
proc selnextline {dir} {
}
proc addtocflist {ids} {
}
proc addtocflist {ids} {
- global treediffs cflist
+ global treediffs cflist diffpindex
+
+ set colors {black blue green red cyan magenta}
+ set color [lindex $colors [expr {$diffpindex % [llength $colors]}]]
foreach f $treediffs($ids) {
$cflist insert end $f
foreach f $treediffs($ids) {
$cflist insert end $f
+ $cflist itemconf end -foreground $color
}
getblobdiffs $ids
}
}
getblobdiffs $ids
}
@@
-1741,7
+1757,6
@@
proc gettreediffline {gdtf ids} {
if {$ids != $diffids} {
gettreediffs $diffids
} else {
if {$ids != $diffids} {
gettreediffs $diffids
} else {
- unset diffids
addtocflist $ids
}
}
addtocflist $ids
}
}
@@
-1752,8
+1767,8
@@
proc gettreediffline {gdtf ids} {
}
proc getblobdiffs {ids} {
}
proc getblobdiffs {ids} {
- global diffopts blobdifffd
blobdiffids env curdifftag curtagstart
- global
diffindex difffilestart
nextupdate
+ global diffopts blobdifffd
diffids env
+ global nextupdate
set id [lindex $ids 0]
set p [lindex $ids 1]
set id [lindex $ids 0]
set p [lindex $ids 1]
@@
-1763,33
+1778,33
@@
proc getblobdiffs {ids} {
return
}
fconfigure $bdf -blocking 0
return
}
fconfigure $bdf -blocking 0
- set blobdiffids $ids
set blobdifffd($ids) $bdf
set blobdifffd($ids) $bdf
- set curdifftag Comments
- set curtagstart 0.0
- set diffindex 0
- catch {unset difffilestart}
- fileevent $bdf readable "getblobdiffline $bdf {$ids}"
+ fileevent $bdf readable [list getblobdiffline $bdf $ids]
set nextupdate [expr {[clock clicks -milliseconds] + 100}]
}
proc getblobdiffline {bdf ids} {
set nextupdate [expr {[clock clicks -milliseconds] + 100}]
}
proc getblobdiffline {bdf ids} {
- global
blob
diffids blobdifffd ctext curdifftag curtagstart seenfile
+ global diffids blobdifffd ctext curdifftag curtagstart seenfile
global diffnexthead diffnextnote diffindex difffilestart
global diffnexthead diffnextnote diffindex difffilestart
- global nextupdate
+ global nextupdate
diffpending diffpindex
set n [gets $bdf line]
if {$n < 0} {
if {[eof $bdf]} {
close $bdf
set n [gets $bdf line]
if {$n < 0} {
if {[eof $bdf]} {
close $bdf
- if {$ids == $
blob
diffids && $bdf == $blobdifffd($ids)} {
+ if {$ids == $diffids && $bdf == $blobdifffd($ids)} {
$ctext tag add $curdifftag $curtagstart end
set seenfile($curdifftag) 1
$ctext tag add $curdifftag $curtagstart end
set seenfile($curdifftag) 1
+ if {[incr diffpindex] < [llength $diffpending]} {
+ set id [lindex $ids 0]
+ set p [lindex $diffpending $diffpindex]
+ contdiff [list $id $p]
+ }
}
}
return
}
}
}
return
}
- if {$ids != $
blob
diffids || $bdf != $blobdifffd($ids)} {
+ if {$ids != $diffids || $bdf != $blobdifffd($ids)} {
return
}
$ctext conf -state normal
return
}
$ctext conf -state normal
@@
-1882,7
+1897,7
@@
proc nextfile {} {
}
proc listboxsel {} {
}
proc listboxsel {} {
- global ctext cflist currentid treediffs
seenfile
+ global ctext cflist currentid treediffs
if {![info exists currentid]} return
set sel [lsort [$cflist curselection]]
if {$sel eq {}} return
if {![info exists currentid]} return
set sel [lsort [$cflist curselection]]
if {$sel eq {}} return