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:
parent
e11f123315
commit
0a4dd8b855
1 changed files with 24 additions and 18 deletions
42
gitk
42
gitk
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue