Skip to content
Permalink
Browse files

Merge pull request #2170 from dscho/gitk-long-cmdline

Fix gitk (long cmdline)
  • Loading branch information...
dscho committed Apr 26, 2019
2 parents 231c608 + b62ef9c commit 233535ee04936da8518616bf22a141d98f3c673d
Showing with 18 additions and 20 deletions.
  1. +18 −20 gitk-git/gitk
@@ -406,14 +406,16 @@ proc start_rev_list {view} {
if {$revs eq {}} {
return 0
}
set args [limit_arg_length [concat $vflags($view) $revs]]
set args $vflags($view)
} else {
set revs {}
set args $vorigargs($view)
}

if {[catch {
set fd [open [concat | git log --no-color -z --pretty=raw $show_notes \
--parents --boundary $args "--" $files] r]
--parents --boundary $args --stdin \
"<<[join [concat $revs "--" $files] "\\n"]"] r]
} err]} {
error_popup "[mc "Error executing git log:"] $err"
return 0
@@ -555,13 +557,19 @@ proc updatecommits {} {
set revs $newrevs
set vposids($view) [lsort -unique [concat $oldpos $vposids($view)]]
}
set args [concat $vflags($view) $revs --not $oldpos]
set args $vflags($view)
foreach r $oldpos {
lappend revs "^$r"
}
} else {
set revs {}
set args $vorigargs($view)
}
if {[catch {
set fd [open [concat | git log --no-color -z --pretty=raw $show_notes \
--parents --boundary $args "--" $vfilelimit($view)] r]
--parents --boundary $args --stdin \
"<<[join [concat $revs "--" \
$vfilelimit($view)] "\\n"]"] r]
} err]} {
error_popup "[mc "Error executing git log:"] $err"
return
@@ -10174,10 +10182,15 @@ proc getallcommits {} {
foreach id $seeds {
lappend ids "^$id"
}
lappend ids "--"
}
}
if {$ids ne {}} {
set cmd [limit_arg_length [concat $cmd $ids]]
if {$ids eq "--all"} {
set cmd [concat $cmd "--all"]
} else {
set cmd [concat $cmd --stdin "<<[join $ids "\\n"]"]
}
set fd [open $cmd r]
fconfigure $fd -blocking 0
incr allcommits
@@ -10188,21 +10201,6 @@ proc getallcommits {} {
}
}

# The maximum command line length for the CreateProcess function is 32767 characters, see
# http://blogs.msdn.com/oldnewthing/archive/2003/12/10/56028.aspx
# Be a little conservative in case Tcl adds some more stuff to the command line we do not
# know about and truncate the command line at a SHA1-boundary below 32000 characters.
proc limit_arg_length {cmd} {
if {[tk windowingsystem] == "win32" &&
[string length $cmd] > 32000} {
set ndx [string last " " $cmd 32000]
if {$ndx != -1} {
return [string range $cmd 0 $ndx]
}
}
return $cmd
}

# Since most commits have 1 parent and 1 child, we group strings of
# such commits into "arcs" joining branch/merge points (BMPs), which
# are commits that either don't have 1 parent or don't have 1 child.

0 comments on commit 233535e

Please sign in to comment.
You can’t perform that action at this time.