summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Rast <trast@student.ethz.ch>2009-08-13 07:25:03 (GMT)
committerPaul Mackerras <paulus@samba.org>2009-08-13 11:49:12 (GMT)
commit9bf3acfadafe9e5961296ff22a1677a9f5afe508 (patch)
tree7f86f6c28aa6e4688cf2ef2832658deb14b2dee4
parent2b1fbf90aa9c0fb2a1033793728aebf77c11334d (diff)
downloadgit-9bf3acfadafe9e5961296ff22a1677a9f5afe508.zip
git-9bf3acfadafe9e5961296ff22a1677a9f5afe508.tar.gz
git-9bf3acfadafe9e5961296ff22a1677a9f5afe508.tar.bz2
gitk: Parse arbitrary commit-ish in SHA1 field
We only accepted either SHA1s or heads/tags that have been read. This meant the user could not, e.g., enter HEAD to go back to the current commit. This adds code to call out to git rev-parse --verify if all other methods of interpreting the string the user entered fail. (git-rev-parse alone is not enough as we really want a single revision.) The error paths change slighly, because we now know from the rev-parse invocation whether the expression was valid at all. The previous "unknown" path is now only triggered if the revision does exist, but is not in the current view display. Signed-off-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Paul Mackerras <paulus@samba.org>
-rwxr-xr-xgitk7
1 files changed, 6 insertions, 1 deletions
diff --git a/gitk b/gitk
index ef4ba3c..8c08310 100755
--- a/gitk
+++ b/gitk
@@ -7909,6 +7909,11 @@ proc gotocommit {} {
}
set id [lindex $matches 0]
}
+ } else {
+ if {[catch {set id [exec git rev-parse --verify $sha1string]}]} {
+ error_popup [mc "Revision %s is not known" $sha1string]
+ return
+ }
}
}
if {[commitinview $id $curview]} {
@@ -7918,7 +7923,7 @@ proc gotocommit {} {
if {[regexp {^[0-9a-fA-F]{4,}$} $sha1string]} {
set msg [mc "SHA1 id %s is not known" $sha1string]
} else {
- set msg [mc "Tag/Head %s is not known" $sha1string]
+ set msg [mc "Revision %s is not in the current view" $sha1string]
}
error_popup $msg
}