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>
Paul Mackerras committed
Dec 29, 2007 at 21:13 UTC
eb5f8c9c00716dd3f55b1f09329309a657c492e0
1 file changed
+10
-3
gitk
+10
-3
@@ -170,11 +170,18 @@ proc updatecommits {} {
170
global curview viewargs viewfiles viewincl viewinstances
171
global viewactive viewcomplete loginstance tclencoding mainheadid
172
global varcid startmsecs commfd showneartags showlocalchanges leftover
173
+ global mainheadid
174
174
- if {$showlocalchanges && [commitinview $mainheadid $curview]} {
175
- dodiffindex
176
- }
175
+ set oldmainid $mainheadid
176
rereadrefs
177
+ if {$showlocalchanges} {
178
+ if {$mainheadid ne $oldmainid} {
179
+ dohidelocalchanges
180
+ }
181
+ if {[commitinview $mainheadid $curview]} {
182
+ dodiffindex
183
+ }
184
+ }
185
set view $curview
186
set commits [exec git rev-parse --default HEAD --revs-only \
187
$viewargs($view)]