gitk: Fix display of branch names on some commits
authorPaul Mackerras <paulus@samba.org>
Tue, 1 Jan 2013 05:51:03 +0000 (16:51 +1100)
committerPaul Mackerras <paulus@samba.org>
Tue, 1 Jan 2013 05:51:03 +0000 (16:51 +1100)
Sometimes the code that divides commits up into arcs creates two
successive arcs, but the commit between them (the commit at the end
of the first arc and the beginning of the second arc) has only one
parent and one child. If that commit is also the head of one or more
branches, those branches get omitted from the "Branches" field in the
commit display.

The omission occurs because the commit gets erroneously identified as
a commit which is part-way along an arc in [descheads]. This fixes it
by changing the test to look at the arcouts array, which only contains
elements for the commits at the start or end of an arc.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
gitk
diff --git a/gitk b/gitk
index bc73eea518f551251c56511c239e6d73857bc5a9..eead5a48d85c5c8db47df2c82fea5718216808d6 100755 (executable)
--- a/gitk
+++ b/gitk
@@ -10582,13 +10582,13 @@ proc anctags {id} {
 # including id itself if it has a head.
 proc descheads {id} {
     global arcnos arcstart arcids archeads idheads cached_dheads
-    global allparents
+    global allparents arcout
 
     if {![info exists allparents($id)]} {
        return {}
     }
     set aret {}
-    if {[llength $arcnos($id)] == 1 && [llength $allparents($id)] == 1} {
+    if {![info exists arcout($id)]} {
        # part-way along an arc; check it first
        set a [lindex $arcnos($id) 0]
        if {$archeads($a) ne {}} {