gitk: escape file paths before piping to git log
We just started piping the file paths via `stdin` instead of passing them via the command-line, to avoid running into command-line limitations. However, since we now pipe the file paths, we need to take care of special characters. This fixes https://github.com/git-for-windows/git/issues/2293 Signed-off-by: Nico Rieck <nico.rieck@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
bb5cb23daf
commit
7dd272eca1
16
gitk
16
gitk
|
@ -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
|
||||||
|
@ -414,7 +424,8 @@ proc start_rev_list {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 --stdin \
|
--parents --boundary $args --stdin \
|
||||||
"<<[join [concat $revs "--" $files] "\\n"]"] r]
|
"<<[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
|
||||||
|
@ -568,7 +579,8 @@ proc updatecommits {} {
|
||||||
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 --stdin \
|
--parents --boundary $args --stdin \
|
||||||
"<<[join [concat $revs "--" \
|
"<<[join [concat $revs "--" \
|
||||||
$vfilelimit($view)] "\\n"]"] r]
|
[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
|
||||||
|
|
Loading…
Reference in New Issue