diff --git a/gitk b/gitk index db61a15da1..42e96d0e49 100755 --- a/gitk +++ b/gitk @@ -32,10 +32,29 @@ 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 + + set startmsecs [clock clicks -milliseconds] + set nextupdate [expr {$startmsecs + 100}] + set ncmupdate 1 + if [catch { + set commfd [open [concat | git-rev-list --header --topo-order \ + --parents $rlargs] r] + } err] { + puts stderr "Error executing git-rev-list: $err" + exit 1 + } + 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] @@ -46,24 +65,10 @@ proc getcommits {rargs} { 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] - } err] { - puts stderr "Error executing git-rev-list: $err" - exit 1 - } - set leftover {} - fconfigure $commfd -blocking 0 -translation lf -encoding $gitencoding - fileevent $commfd readable [list getcommitlines $commfd] + 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} {