mirror of
https://github.com/git/git.git
synced 2024-05-09 03:16:13 +02:00
Merge gitk changes into js/gitk-fixes-from-gfw
* .tmp-gitk: gitk: escape file paths before piping to git log gitk: prevent overly long command lines
This commit is contained in:
commit
99e70f3077
|
@ -353,6 +353,16 @@ proc parseviewrevs {view revs} {
|
||||||
return $ret
|
return $ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Escapes a list of filter paths to be passed to git log via stdin. Note that
|
||||||
|
# paths must not be quoted.
|
||||||
|
proc escape_filter_paths {paths} {
|
||||||
|
set escaped [list]
|
||||||
|
foreach path $paths {
|
||||||
|
lappend escaped [string map {\\ \\\\ "\ " "\\\ "} $path]
|
||||||
|
}
|
||||||
|
return $escaped
|
||||||
|
}
|
||||||
|
|
||||||
# Start off a git log process and arrange to read its output
|
# Start off a git log process and arrange to read its output
|
||||||
proc start_rev_list {view} {
|
proc start_rev_list {view} {
|
||||||
global startmsecs commitidx viewcomplete curview
|
global startmsecs commitidx viewcomplete curview
|
||||||
|
@ -405,14 +415,17 @@ proc start_rev_list {view} {
|
||||||
if {$revs eq {}} {
|
if {$revs eq {}} {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
set args [concat $vflags($view) $revs]
|
set args $vflags($view)
|
||||||
} else {
|
} else {
|
||||||
|
set revs {}
|
||||||
set args $vorigargs($view)
|
set args $vorigargs($view)
|
||||||
}
|
}
|
||||||
|
|
||||||
if {[catch {
|
if {[catch {
|
||||||
set fd [open [concat | git log --no-color -z --pretty=raw $show_notes \
|
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 "--" \
|
||||||
|
[escape_filter_paths $files]] "\\n"]"] r]
|
||||||
} err]} {
|
} err]} {
|
||||||
error_popup "[mc "Error executing git log:"] $err"
|
error_popup "[mc "Error executing git log:"] $err"
|
||||||
return 0
|
return 0
|
||||||
|
@ -554,13 +567,20 @@ proc updatecommits {} {
|
||||||
set revs $newrevs
|
set revs $newrevs
|
||||||
set vposids($view) [lsort -unique [concat $oldpos $vposids($view)]]
|
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 {
|
} else {
|
||||||
|
set revs {}
|
||||||
set args $vorigargs($view)
|
set args $vorigargs($view)
|
||||||
}
|
}
|
||||||
if {[catch {
|
if {[catch {
|
||||||
set fd [open [concat | git log --no-color -z --pretty=raw $show_notes \
|
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 "--" \
|
||||||
|
[escape_filter_paths \
|
||||||
|
$vfilelimit($view)]] "\\n"]"] r]
|
||||||
} err]} {
|
} err]} {
|
||||||
error_popup "[mc "Error executing git log:"] $err"
|
error_popup "[mc "Error executing git log:"] $err"
|
||||||
return
|
return
|
||||||
|
@ -10231,10 +10251,16 @@ proc getallcommits {} {
|
||||||
foreach id $seeds {
|
foreach id $seeds {
|
||||||
lappend ids "^$id"
|
lappend ids "^$id"
|
||||||
}
|
}
|
||||||
|
lappend ids "--"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if {$ids ne {}} {
|
if {$ids ne {}} {
|
||||||
set fd [open [concat $cmd $ids] r]
|
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
|
fconfigure $fd -blocking 0
|
||||||
incr allcommits
|
incr allcommits
|
||||||
nowbusy allcommits
|
nowbusy allcommits
|
||||||
|
|
Loading…
Reference in New Issue