mirror of
https://github.com/git/git.git
synced 2026-01-10 01:56:42 +00:00
git-gui: pass redirections as separate argument to git_read
We are going to treat command arguments and redirections differently to avoid passing arguments that look like redirections to the command accidentally. To do so, it will be necessary to know which arguments are intentional redirections. Rewrite direct call sites of git_read to pass intentional redirections as a second (optional) argument. git_read defers to safe_open_command, but we cannot make it safe, yet, because one of the callers of git_read is proc git, which does not yet know which of its arguments are redirections. This is the topic of the next commit. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Taylor Blau <me@ttaylorr.com>
This commit is contained in:
committed by
Taylor Blau
parent
1e0a93c3d3
commit
60b0ba0a04
@@ -642,11 +642,11 @@ proc safe_open_command {cmd {redir {}}} {
|
||||
return $fd
|
||||
}
|
||||
|
||||
proc git_read {cmd} {
|
||||
proc git_read {cmd {redir {}}} {
|
||||
set cmdp [_git_cmd [lindex $cmd 0]]
|
||||
set cmd [lrange $cmd 1 end]
|
||||
|
||||
return [safe_open_command [concat $cmdp $cmd]]
|
||||
return [safe_open_command [concat $cmdp $cmd] $redir]
|
||||
}
|
||||
|
||||
proc git_read_nice {cmd} {
|
||||
@@ -669,7 +669,7 @@ proc git_write {cmd} {
|
||||
}
|
||||
|
||||
proc githook_read {hook_name args} {
|
||||
git_read [concat [list hook run --ignore-missing $hook_name --] $args 2>@1]
|
||||
git_read [concat [list hook run --ignore-missing $hook_name --] $args] [list 2>@1]
|
||||
}
|
||||
|
||||
proc kill_file_process {fd} {
|
||||
|
||||
@@ -352,8 +352,8 @@ method _readtree {} {
|
||||
--exclude-per-directory=.gitignore \
|
||||
$HEAD \
|
||||
$new_hash \
|
||||
2>@1 \
|
||||
]]
|
||||
] \
|
||||
[list 2>@1]]
|
||||
fconfigure $fd -blocking 0 -translation binary
|
||||
fileevent $fd readable [cb _readtree_wait $fd $status_bar_operation]
|
||||
}
|
||||
|
||||
@@ -959,8 +959,8 @@ method _do_clone_checkout {HEAD} {
|
||||
-v \
|
||||
HEAD \
|
||||
HEAD \
|
||||
2>@1 \
|
||||
]]
|
||||
] \
|
||||
[list 2>@1]]
|
||||
fconfigure $fd -blocking 0 -translation binary
|
||||
fileevent $fd readable [cb _readtree_wait $fd]
|
||||
}
|
||||
|
||||
@@ -92,8 +92,7 @@ method _init {} {
|
||||
|
||||
method exec {cmd {after {}}} {
|
||||
if {[lindex $cmd 0] eq {git}} {
|
||||
lappend cmd 2>@1
|
||||
set fd_f [git_read [lrange $cmd 1 end]]
|
||||
set fd_f [git_read [lrange $cmd 1 end] [list 2>@1]]
|
||||
} else {
|
||||
set fd_f [safe_open_command $cmd [list 2>@1]]
|
||||
}
|
||||
|
||||
@@ -239,7 +239,7 @@ Continue with resetting the current changes?"]
|
||||
}
|
||||
|
||||
if {[ask_popup $op_question] eq {yes}} {
|
||||
set fd [git_read [list read-tree --reset -u -v HEAD 2>@1]]
|
||||
set fd [git_read [list read-tree --reset -u -v HEAD] [list 2>@1]]
|
||||
fconfigure $fd -blocking 0 -translation binary
|
||||
set status_bar_operation [$::main_status \
|
||||
start \
|
||||
|
||||
Reference in New Issue
Block a user