[RFC PATCH (GITK)] gitk: Allow overriding the default commit.
- From
Alexander Gavrilov <angavrilov@gmail.com>
- Date
- Aug 3, 2008, 08:49 UTC
- Message-ID
- <200808031249.35603.angavrilov@gmail.com>
- In-Reply-To
- <bb6f213e0807310541s383c2938q91543a1c57a4d71f@mail.gmail.com>
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@gmail.com> ---
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