Skip to content

Commit

Permalink
gitk: Fix bug causing nearby tags/heads to sometimes not be displayed
Browse files Browse the repository at this point in the history
When we compute descendent heads and descendent/ancestor tags, we
cache the results.  We need to be careful to invalidate the cache
when we add stuff to the graph.  Also make sure that when we cache
descendent heads for a node we only cache the heads that are actually
descendents of that node.

Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Paul Mackerras committed Jun 23, 2007
1 parent a2c2236 commit f3326b6
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions gitk
Original file line number Diff line number Diff line change
Expand Up @@ -5950,7 +5950,7 @@ proc regetallcommits {} {
# coming from descendents, and "outgoing" means going towards ancestors.

proc getallclines {fd} {
global allids allparents allchildren idtags nextarc nbmp
global allids allparents allchildren idtags idheads nextarc nbmp
global arcnos arcids arctags arcout arcend arcstart archeads growing
global seeds allcommits

Expand Down Expand Up @@ -6023,6 +6023,12 @@ proc getallclines {fd} {
}
set arcout($id) $ao
}
if {$nid > 0} {
global cached_dheads cached_dtags cached_atags
catch {unset cached_dheads}
catch {unset cached_dtags}
catch {unset cached_atags}
}
if {![eof $fd]} {
return [expr {$nid >= 1000? 2: 1}]
}
Expand Down Expand Up @@ -6674,7 +6680,7 @@ proc descheads {id} {
if {![info exists allparents($id)]} {
return {}
}
set ret {}
set aret {}
if {[llength $arcnos($id)] == 1 && [llength $allparents($id)] == 1} {
# part-way along an arc; check it first
set a [lindex $arcnos($id) 0]
Expand All @@ -6684,14 +6690,15 @@ proc descheads {id} {
foreach t $archeads($a) {
set j [lsearch -exact $arcids($a) $t]
if {$j > $i} break
lappend $ret $t
lappend aret $t
}
}
set id $arcstart($a)
}
set origid $id
set todo [list $id]
set seen($id) 1
set ret {}
for {set i 0} {$i < [llength $todo]} {incr i} {
set id [lindex $todo $i]
if {[info exists cached_dheads($id)]} {
Expand All @@ -6714,6 +6721,7 @@ proc descheads {id} {
}
set ret [lsort -unique $ret]
set cached_dheads($origid) $ret
return [concat $ret $aret]
}

proc addedtag {id} {
Expand Down

0 comments on commit f3326b6

Please sign in to comment.