@@ -406,14 +406,16 @@ proc start_rev_list {view} {
406
406
if {$revs eq {}} {
407
407
return 0
408
408
}
409
- set args [limit_arg_length [ concat $vflags($view) $revs ]]
409
+ set args $vflags($view)
410
410
} else {
411
+ set revs {}
411
412
set args $vorigargs($view)
412
413
}
413
414
414
415
if {[catch {
415
416
set fd [open [concat | git log --no-color -z --pretty=raw $show_notes \
416
- --parents --boundary $args " --" $files ] r]
417
+ --parents --boundary $args --stdin \
418
+ " <<[ join [concat $revs " --" $files ] " \\ n" ]" ] r]
417
419
} err]} {
418
420
error_popup " [ mc " Error executing git log:" ] $err "
419
421
return 0
@@ -555,13 +557,19 @@ proc updatecommits {} {
555
557
set revs $newrevs
556
558
set vposids($view ) [lsort -unique [concat $oldpos $vposids($view) ]]
557
559
}
558
- set args [concat $vflags($view) $revs --not $oldpos ]
560
+ set args $vflags($view)
561
+ foreach r $oldpos {
562
+ lappend revs " ^$r "
563
+ }
559
564
} else {
565
+ set revs {}
560
566
set args $vorigargs($view)
561
567
}
562
568
if {[catch {
563
569
set fd [open [concat | git log --no-color -z --pretty=raw $show_notes \
564
- --parents --boundary $args " --" $vfilelimit($view) ] r]
570
+ --parents --boundary $args --stdin \
571
+ " <<[ join [concat $revs " --" \
572
+ $vfilelimit($view) ] " \\ n" ]" ] r]
565
573
} err]} {
566
574
error_popup " [ mc " Error executing git log:" ] $err "
567
575
return
@@ -10174,10 +10182,15 @@ proc getallcommits {} {
10174
10182
foreach id $seeds {
10175
10183
lappend ids " ^$id "
10176
10184
}
10185
+ lappend ids " --"
10177
10186
}
10178
10187
}
10179
10188
if {$ids ne {}} {
10180
- set cmd [limit_arg_length [concat $cmd $ids ]]
10189
+ if {$ids eq " --all" } {
10190
+ set cmd [concat $cmd " --all" ]
10191
+ } else {
10192
+ set cmd [concat $cmd --stdin " <<[ join $ids " \\ n" ] " ]
10193
+ }
10181
10194
set fd [open $cmd r]
10182
10195
fconfigure $fd -blocking 0
10183
10196
incr allcommits
@@ -10188,21 +10201,6 @@ proc getallcommits {} {
10188
10201
}
10189
10202
}
10190
10203
10191
- # The maximum command line length for the CreateProcess function is 32767 characters, see
10192
- # http://blogs.msdn.com/oldnewthing/archive/2003/12/10/56028.aspx
10193
- # Be a little conservative in case Tcl adds some more stuff to the command line we do not
10194
- # know about and truncate the command line at a SHA1-boundary below 32000 characters.
10195
- proc limit_arg_length {cmd} {
10196
- if {[tk windowingsystem] == " win32" &&
10197
- [string length $cmd ] > 32000} {
10198
- set ndx [string last " " $cmd 32000]
10199
- if {$ndx != -1} {
10200
- return [string range $cmd 0 $ndx ]
10201
- }
10202
- }
10203
- return $cmd
10204
- }
10205
-
10206
10204
# Since most commits have 1 parent and 1 child, we group strings of
10207
10205
# such commits into "arcs" joining branch/merge points (BMPs), which
10208
10206
# are commits that either don't have 1 parent or don't have 1 child.
0 commit comments