summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Paul Mackerras <paulus@samba.org>2009-09-10 21:58:40 +1000
committerLibravatar Paul Mackerras <paulus@samba.org>2009-09-10 21:58:40 +1000
commitaa43561ac0c18dd6d200afe3a02e4e6c7e4beeae (patch)
tree7a6df6ed664589b60f30e405b746769e6d0863f2
parentgitk: Show diff of commits at end of compare-commits output (diff)
downloadtgif-aa43561ac0c18dd6d200afe3a02e4e6c7e4beeae.tar.xz
gitk: Don't compare fake children when comparing commits
This fixes a bug where the compare-commits function would advance to a fake node (one representing local changes, either checked in but not committed, or not checked in) and then get an error when trying to get the patch-id. This fixes it by only considering the real children of each commit. Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
-rwxr-xr-xgitk30
1 files changed, 21 insertions, 9 deletions
diff --git a/gitk b/gitk
index 34067b9ecc..c0f38adb9b 100755
--- a/gitk
+++ b/gitk
@@ -2,7 +2,7 @@
# Tcl ignores the next line -*- tcl -*- \
exec wish "$0" -- "$@"
-# Copyright © 2005-2008 Paul Mackerras. All rights reserved.
+# Copyright © 2005-2009 Paul Mackerras. All rights reserved.
# This program is free software; it may be used, copied, modified
# and distributed under the terms of the GNU General Public Licence,
# either version 2, or (at your option) any later version.
@@ -989,6 +989,18 @@ proc removefakerow {id} {
drawvisible
}
+proc real_children {vp} {
+ global children nullid nullid2
+
+ set kids {}
+ foreach id $children($vp) {
+ if {$id ne $nullid && $id ne $nullid2} {
+ lappend kids $id
+ }
+ }
+ return $kids
+}
+
proc first_real_child {vp} {
global children nullid nullid2
@@ -8463,23 +8475,23 @@ proc do_cmp_commits {a b} {
}
}
if {$skipa} {
- if {[llength $children($curview,$a)] != 1} {
+ set kids [real_children $curview,$a]
+ if {[llength $kids] != 1} {
$ctext insert end "\n"
appendshortlink $a [mc "Commit "] \
- [mc " has %s children - stopping\n" \
- [llength $children($curview,$a)]]
+ [mc " has %s children - stopping\n" [llength $kids]]
break
}
- set a [lindex $children($curview,$a) 0]
+ set a [lindex $kids 0]
}
if {$skipb} {
- if {[llength $children($curview,$b)] != 1} {
+ set kids [real_children $curview,$b]
+ if {[llength $kids] != 1} {
appendshortlink $b [mc "Commit "] \
- [mc " has %s children - stopping\n" \
- [llength $children($curview,$b)]]
+ [mc " has %s children - stopping\n" [llength $kids]]
break
}
- set b [lindex $children($curview,$b) 0]
+ set b [lindex $kids 0]
}
}
$ctext conf -state disabled