diff --git a/gitk b/gitk index db61a15da1..42e96d0e49 100755 --- a/gitk +++ b/gitk @@ -32,26 +32,16 @@ proc parse_args {rargs} { return $parsed_args } -proc getcommits {rargs} { - global oldcommits commits commfd phase canv mainfont env +proc start_rev_list {rlargs} { global startmsecs nextupdate ncmupdate - global ctext maincursor textcursor leftover gitencoding + global commfd leftover gitencoding - # check that we can find a .git directory somewhere... - set gitdir [gitdir] - if {![file isdirectory $gitdir]} { - error_popup "Cannot find the git directory \"$gitdir\"." - exit 1 - } - set oldcommits {} - set commits {} - set phase getcommits set startmsecs [clock clicks -milliseconds] set nextupdate [expr {$startmsecs + 100}] set ncmupdate 1 - set parsed_args [parse_args $rargs] if [catch { - set commfd [open "|git-rev-list --header --topo-order --parents $parsed_args" r] + set commfd [open [concat | git-rev-list --header --topo-order \ + --parents $rlargs] r] } err] { puts stderr "Error executing git-rev-list: $err" exit 1 @@ -59,11 +49,26 @@ proc getcommits {rargs} { set leftover {} fconfigure $commfd -blocking 0 -translation lf -encoding $gitencoding fileevent $commfd readable [list getcommitlines $commfd] + . config -cursor watch + settextcursor watch +} + +proc getcommits {rargs} { + global oldcommits commits phase canv mainfont env + + # check that we can find a .git directory somewhere... + set gitdir [gitdir] + if {![file isdirectory $gitdir]} { + error_popup "Cannot find the git directory \"$gitdir\"." + exit 1 + } + set oldcommits {} + set commits {} + set phase getcommits + start_rev_list [parse_args $rargs] $canv delete all $canv create text 3 3 -anchor nw -text "Reading commits..." \ -font $mainfont -tags textitems - . config -cursor watch - settextcursor watch } proc getcommitlines {commfd} { @@ -3684,20 +3689,7 @@ proc updatecommits {rargs} { } readrefs - if [catch { - set commfd [open "|git-rev-list --header --topo-order --parents $ignoreold $args" r] - } err] { - puts stderr "Error executing git-rev-list: $err" - exit 1 - } - set startmsecs [clock clicks -milliseconds] - set nextupdate [expr $startmsecs + 100] - set ncmupdate 1 - set leftover {} - fconfigure $commfd -blocking 0 -translation lf - fileevent $commfd readable [list getcommitlines $commfd] - . config -cursor watch - settextcursor watch + start_rev_list [concat $ignoreold $args] } proc showtag {tag isnew} {