X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=gitk;h=9e52a3579150637dbfeb36d79c392e4a8624532a;hb=f3b8b3ce3ec672ac096bb1431ea7e609f4624f45;hp=d994eec9152ed9da822c21d48f9405f00609ff07;hpb=4f2c2642ca7331e4950e8d6c1d112eef1918c980;p=git.git diff --git a/gitk b/gitk index d994eec9..9e52a357 100755 --- a/gitk +++ b/gitk @@ -1949,18 +1949,35 @@ proc sha1change {n1 n2 op} { 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"