gitk: fix error when remote tracking branch is deleted

When a remote tracking branch is deleted (e.g., via 'git push --delete
origin branch'), the headids array entry for that branch is removed, but
upstreamofref may still reference it. This causes gitk to show an error
and prevents the Tags and Heads view from opening.

Fix by checking that headids($upstreamofref($n)) exists before accessing
it in the refill_reflist function.

Signed-off-by: Michael Rappazzo <rappazzo@gmail.com>
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
main
Michael Rappazzo 2025-09-13 07:31:51 -04:00 committed by Johannes Sixt
parent 9965cc771b
commit 88189dd7cb
1 changed files with 3 additions and 1 deletions

4
gitk
View File

@ -10332,7 +10332,9 @@ proc refill_reflist {} {
if {![string match "remotes/*" $n] && [string match $reflistfilter $n]} {
if {[commitinview $headids($n) $curview]} {
lappend localrefs [list $n H]
if {[info exists upstreamofref($n)] && [commitinview $headids($upstreamofref($n)) $curview]} {
if {[info exists upstreamofref($n)] && \
[info exists headids($upstreamofref($n))] && \
[commitinview $headids($upstreamofref($n)) $curview]} {
lappend trackedremoterefs [list $upstreamofref($n) R]
}
} else {