summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 2516dae)
raw | patch | inline | side by side (parent: 2516dae)
author | Paul Mackerras <paulus@samba.org> | |
Sun, 23 Apr 2006 12:45:55 +0000 (22:45 +1000) | ||
committer | Paul Mackerras <paulus@samba.org> | |
Sun, 23 Apr 2006 12:45:55 +0000 (22:45 +1000) |
This uses git-rev-parse --no-revs --no-flags to give us just the
file and directory names on the command line, so that we can create
the "Command line" view if any were specified. All other arguments
just get passed to git-rev-list (without a pass through git-rev-parse).
Signed-off-by: Paul Mackerras <paulus@samba.org>
file and directory names on the command line, so that we can create
the "Command line" view if any were specified. All other arguments
just get passed to git-rev-list (without a pass through git-rev-parse).
Signed-off-by: Paul Mackerras <paulus@samba.org>
gitk | patch | blob | history |
index 305aa2ef08851af4df37ae0ba9aefb5d157e3b85..6cefc8721846fd2a2a97a816d240d8a4cb8336c1 100755 (executable)
--- a/gitk
+++ b/gitk
}
}
-proc parse_args {rargs} {
- global parsed_args cmdline_files
-
- set parsed_args {}
- set cmdline_files {}
- if {[catch {
- set args [concat --default HEAD $rargs]
- set args [split [eval exec git-rev-parse $args] "\n"]
- set i 0
- foreach arg $args {
- if {![regexp {^[0-9a-f]{40}$} $arg]} {
- if {$arg eq "--"} {
- incr i
- }
- set cmdline_files [lrange $args $i end]
- break
- }
- lappend parsed_args $arg
- incr i
- }
- }]} {
- # if git-rev-parse failed for some reason...
- set i [lsearch -exact $rargs "--"]
- if {$i >= 0} {
- set cmdline_files [lrange $rargs [expr {$i+1}] end]
- set rargs [lrange $rargs 0 [expr {$i-1}]]
- }
- if {$rargs == {}} {
- set parsed_args HEAD
- } else {
- set parsed_args $rargs
- }
- }
-}
-
-proc start_rev_list {rlargs} {
+proc start_rev_list {} {
global startmsecs nextupdate ncmupdate
global commfd leftover tclencoding datemode
+ global revtreeargs curview viewfiles
set startmsecs [clock clicks -milliseconds]
set nextupdate [expr {$startmsecs + 100}]
set ncmupdate 1
initlayout
+ set args $revtreeargs
+ if {$viewfiles($curview) ne {}} {
+ set args [concat $args "--" $viewfiles($curview)]
+ }
set order "--topo-order"
if {$datemode} {
set order "--date-order"
}
if {[catch {
set commfd [open [concat | git-rev-list --header $order \
- --parents --boundary $rlargs] r]
+ --parents --boundary --default HEAD $args] r]
} err]} {
puts stderr "Error executing git-rev-list: $err"
exit 1
unset commfd
}
-proc getcommits {rargs} {
+proc getcommits {} {
global phase canv mainfont
set phase getcommits
- start_rev_list $rargs
+ start_rev_list
$canv delete all
$canv create text 3 3 -anchor nw -text "Reading commits..." \
-font $mainfont -tags textitems
set n $curview
set curview -1
catch {unset viewdata($n)}
- parse_args $revtreeargs
readrefs
showview $n
}
global numcommits rowrangelist commitlisted idrowranges
global selectedline currentid canv canvy0
global matchinglines treediffs
- global parsed_args
global pending_select phase
global commitidx rowlaidout rowoptim linesegends leftover
global commfd nextupdate
.bar.view entryconf 2 -state [expr {$n == 0? "disabled": "normal"}]
if {![info exists viewdata($n)]} {
- set args $parsed_args
- if {$viewfiles($n) ne {}} {
- set args [concat $args "--" $viewfiles($n)]
- }
set pending_select $selid
- getcommits $args
+ getcommits
return
}
setcoords
makewindow
readrefs
-parse_args $revtreeargs
-set args $parsed_args
+
+set cmdline_files {}
+catch {
+ set fileargs [eval exec git-rev-parse --no-revs --no-flags $revtreeargs]
+ set cmdline_files [split $fileargs "\n"]
+ set n [llength $cmdline_files]
+ set revtreeargs [lrange $revtreeargs 0 end-$n]
+}
+if {[lindex $revtreeargs end] eq "--"} {
+ set revtreeargs [lrange $revtreeargs 0 end-1]
+}
+
if {$cmdline_files ne {}} {
# create a view for the files/dirs specified on the command line
set curview 1
set viewfiles(1) $cmdline_files
.bar.view add command -label $viewname(1) -command {showview 1}
.bar.view entryconf 2 -state normal
- set args [concat $args "--" $cmdline_files]
}
-getcommits $args
+getcommits