Allow short SHA1 IDs in the SHA1 entry field.
diff --git a/gitk b/gitk
index d994eec..9e52a35 100755
--- a/gitk
+++ b/gitk
@@ -1949,18 +1949,35 @@
 
 proc gotocommit {} {
     global sha1string currentid idline tagids
+    global lineid numcommits
+
     if {$sha1string == {}
 	|| ([info exists currentid] && $sha1string == $currentid)} return
     if {[info exists tagids($sha1string)]} {
 	set id $tagids($sha1string)
     } else {
 	set id [string tolower $sha1string]
+	if {[regexp {^[0-9a-f]{4,39}$} $id]} {
+	    set matches {}
+	    for {set l 0} {$l < $numcommits} {incr l} {
+		if {[string match $id* $lineid($l)]} {
+		    lappend matches $lineid($l)
+		}
+	    }
+	    if {$matches ne {}} {
+		if {[llength $matches] > 1} {
+		    error_popup "Short SHA1 id $id is ambiguous"
+		    return
+		}
+		set id [lindex $matches 0]
+	    }
+	}
     }
     if {[info exists idline($id)]} {
 	selectline $idline($id)
 	return
     }
-    if {[regexp {^[0-9a-fA-F]{40}$} $sha1string]} {
+    if {[regexp {^[0-9a-fA-F]{4,}$} $sha1string]} {
 	set type "SHA1 id"
     } else {
 	set type "Tag"