Date: Sun, 27 Jul 2008 08:18:27 +0400 Other GUI tools may occasionally need to start gitk and make it automatically select a certain commit. This patch supports doing it through the environment or command line. Using the environment allows graceful degradation of the tool when used with an old version of gitk: unsupported command line options cause it to die. Signed-off-by: Alexander Gavrilov <angavrilov@xxxxxxxxx> --- On Thursday 31 July 2008 16:41:20 Alexander Gavrilov wrote: > I have a patch WIP that allows specifying a commit on the command line > to select instead of the head (I need it to enhance the git gui blame > UI). It makes the function somewhat more intelligent. I'll submit it > as soon as this series is sorted out. I decided to send it now. -- Alexander gitk | 25 ++++++++++++++++++++++++- 1 files changed, 24 insertions(+), 1 deletions(-) diff --git a/gitk b/gitk index d093a39..2da885d 100755 --- a/gitk +++ b/gitk @@ -416,10 +416,12 @@ proc stop_rev_list {view} { } proc reset_pending_select {selid} { - global pending_select mainheadid + global pending_select mainheadid selectheadid if {$selid ne {}} { set pending_select $selid + } elseif {$selectheadid ne {}} { + set pending_select $selectheadid } else { set pending_select $mainheadid } @@ -1607,6 +1609,7 @@ proc getcommit {id} { proc readrefs {} { global tagids idtags headids idheads tagobjid global otherrefids idotherrefs mainhead mainheadid + global selecthead selectheadid foreach v {tagids idtags headids idheads otherrefids idotherrefs} { catch {unset $v} @@ -1653,6 +1656,12 @@ proc readrefs {} { set mainhead [string range $thehead 11 end] } } + set selectheadid {} + if {$selecthead ne {}} { + catch { + set selectheadid [exec git rev-parse --verify $selecthead] + } + } } # skip over fake commits @@ -9863,6 +9872,13 @@ if {![file isdirectory $gitdir]} { exit 1 } +set selecthead {} +set selectheadid {} + +if {[info exists env(GITK_SELECT_ID)]} { + set selecthead $env(GITK_SELECT_ID) +} + set revtreeargs {} set cmdline_files {} set i 0 @@ -9874,6 +9890,9 @@ foreach arg $argv { set cmdline_files [lrange $argv [expr {$i + 1}] end] break } + "--select-commit=*" { + set selecthead [string range $arg 16 end] + } "--argscmd=*" { set revtreeargscmd [string range $arg 10 end] } @@ -9884,6 +9903,10 @@ foreach arg $argv { incr i } +if {$selecthead eq "HEAD"} { + set selecthead {} +} + if {$i >= [llength $argv] && $revtreeargs ne {}} { # no -- on command line, but some arguments (other than --argscmd) if {[catch { -- 1.5.6.3.18.gfe82 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html