Skip to content

Commit

Permalink
gitk: Parse arbitrary commit-ish in SHA1 field
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Thomas Rast authored and Paul Mackerras committed Aug 13, 2009
1 parent 2b1fbf9 commit 9bf3acf
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion gitk
Original file line number Diff line number Diff line change
Expand Up @@ -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]} {
Expand All @@ -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
}
Expand Down

0 comments on commit 9bf3acf

Please sign in to comment.