1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-10-29 21:37:53 +01:00

gitk: Don't try to list large numbers of tags or heads in the details pane

With some large repositories, a commit can end up on thousands of
branches, which results in an extremely long "Branches:" line in the
details window, and that results in the window being extremely slow
to scroll.

This fixes it by just showing "many (N)" after "Branches:", "Follows:"
or "Precedes:", where N is the number of heads or tags.  The limit
is currently set at 20 but could be made configurable (and the "many"
could be a link to pop up a window listing them all in case anyone
really wants to know).

Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Paul Mackerras 2007-06-16 21:21:57 +10:00
parent e11f123315
commit 0a4dd8b855

42
gitk
View file

@ -3831,7 +3831,7 @@ proc viewnextline {dir} {
# add a list of tag or branch names at position pos # add a list of tag or branch names at position pos
# returns the number of names inserted # returns the number of names inserted
proc appendrefs {pos ids var} { proc appendrefs {pos ids var} {
global ctext commitrow linknum curview $var global ctext commitrow linknum curview $var maxrefs
if {[catch {$ctext index $pos}]} { if {[catch {$ctext index $pos}]} {
return 0 return 0
@ -3844,24 +3844,29 @@ proc appendrefs {pos ids var} {
lappend tags [list $tag $id] lappend tags [list $tag $id]
} }
} }
set tags [lsort -index 0 -decreasing $tags] if {[llength $tags] > $maxrefs} {
set sep {} $ctext insert $pos "many ([llength $tags])"
foreach ti $tags { } else {
set id [lindex $ti 1] set tags [lsort -index 0 -decreasing $tags]
set lk link$linknum set sep {}
incr linknum foreach ti $tags {
$ctext tag delete $lk set id [lindex $ti 1]
$ctext insert $pos $sep set lk link$linknum
$ctext insert $pos [lindex $ti 0] $lk incr linknum
if {[info exists commitrow($curview,$id)]} { $ctext tag delete $lk
$ctext tag conf $lk -foreground blue $ctext insert $pos $sep
$ctext tag bind $lk <1> \ $ctext insert $pos [lindex $ti 0] $lk
[list selectline $commitrow($curview,$id) 1] if {[info exists commitrow($curview,$id)]} {
$ctext tag conf $lk -underline 1 $ctext tag conf $lk -foreground blue
$ctext tag bind $lk <Enter> { %W configure -cursor hand2 } $ctext tag bind $lk <1> \
$ctext tag bind $lk <Leave> { %W configure -cursor $curtextcursor } [list selectline $commitrow($curview,$id) 1]
$ctext tag conf $lk -underline 1
$ctext tag bind $lk <Enter> { %W configure -cursor hand2 }
$ctext tag bind $lk <Leave> \
{ %W configure -cursor $curtextcursor }
}
set sep ", "
} }
set sep ", "
} }
$ctext conf -state disabled $ctext conf -state disabled
return [llength $tags] return [llength $tags]
@ -6856,6 +6861,7 @@ set mingaplen 30
set cmitmode "patch" set cmitmode "patch"
set wrapcomment "none" set wrapcomment "none"
set showneartags 1 set showneartags 1
set maxrefs 20
set colors {green red blue magenta darkgrey brown orange} set colors {green red blue magenta darkgrey brown orange}
set bgcolor white set bgcolor white