From: Paul Mackerras <paulus@samba.org>
Date: Sat, 29 Dec 2007 10:13:34 +0000 (+1100)
Subject: gitk: Don't try to show local changes from a head that isn't shown
X-Git-Url: http://www.privyetmir.co.uk/gitweb?a=commitdiff_plain;h=eb5f8c9c00716dd3f55b1f09329309a657c492e0;p=gitk

gitk: Don't try to show local changes from a head that isn't shown

When updating the display, if the checked-out head has moved on and
isn't currently shown, and there are local changes, we could try to
insert a fake row with a parent that isn't displayed, leading to a
Tcl error.  This is because we check whether the checked-out head
is displayed before rereading the references (which is when we discover
that the head has moved).  This fixes it.

Signed-off-by: Paul Mackerras <paulus@samba.org>
---

diff --git a/gitk b/gitk
index b5c9e7a..5022fac 100755
--- a/gitk
+++ b/gitk
@@ -170,11 +170,18 @@ proc updatecommits {} {
     global curview viewargs viewfiles viewincl viewinstances
     global viewactive viewcomplete loginstance tclencoding mainheadid
     global varcid startmsecs commfd showneartags showlocalchanges leftover
+    global mainheadid
 
-    if {$showlocalchanges && [commitinview $mainheadid $curview]} {
-	dodiffindex
-    }
+    set oldmainid $mainheadid
     rereadrefs
+    if {$showlocalchanges} {
+	if {$mainheadid ne $oldmainid} {
+	    dohidelocalchanges
+	}
+	if {[commitinview $mainheadid $curview]} {
+	    dodiffindex
+	}
+    }
     set view $curview
     set commits [exec git rev-parse --default HEAD --revs-only \
 		     $viewargs($view)]