gitk: Let git-rev-list do the argument list parsing
This is a fix for a problem reported by Jim Radford where an argument list somewhere overflows on repositories with lots of tags. In fact it's now unnecessary to use git-rev-parse since git-rev-list can take all the arguments that git-rev-parse can. This is inspired by but not the same as the solutions suggested by Jim Radford and Linus Torvalds. Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
e7da347520
commit
61e56c8823
20
gitk
20
gitk
@ -16,22 +16,6 @@ proc gitdir {} {
|
||||
}
|
||||
}
|
||||
|
||||
proc parse_args {rargs} {
|
||||
global parsed_args
|
||||
|
||||
if {[catch {
|
||||
set parse_args [concat --default HEAD $rargs]
|
||||
set parsed_args [split [eval exec git-rev-parse $parse_args] "\n"]
|
||||
}]} {
|
||||
# if git-rev-parse failed for some reason...
|
||||
if {$rargs == {}} {
|
||||
set rargs HEAD
|
||||
}
|
||||
set parsed_args $rargs
|
||||
}
|
||||
return $parsed_args
|
||||
}
|
||||
|
||||
proc start_rev_list {rlargs} {
|
||||
global startmsecs nextupdate ncmupdate
|
||||
global commfd leftover tclencoding datemode
|
||||
@ -46,7 +30,7 @@ proc start_rev_list {rlargs} {
|
||||
}
|
||||
if {[catch {
|
||||
set commfd [open [concat | git-rev-list --header $order \
|
||||
--parents --boundary $rlargs] r]
|
||||
--parents --boundary --default HEAD $rlargs] r]
|
||||
} err]} {
|
||||
puts stderr "Error executing git-rev-list: $err"
|
||||
exit 1
|
||||
@ -65,7 +49,7 @@ proc getcommits {rargs} {
|
||||
global phase canv mainfont
|
||||
|
||||
set phase getcommits
|
||||
start_rev_list [parse_args $rargs]
|
||||
start_rev_list $rargs
|
||||
$canv delete all
|
||||
$canv create text 3 3 -anchor nw -text "Reading commits..." \
|
||||
-font $mainfont -tags textitems
|
||||
|
Loading…
Reference in New Issue
Block a user