summaryrefslogtreecommitdiff
path: root/transport-helper.c
diff options
context:
space:
mode:
authorMasatake Osanai <unpush@gmail.com>2011-02-15 07:13:04 +0900
committerJunio C Hamano <gitster@pobox.com>2011-02-14 15:28:13 -0800
commit48d9e6ae4bcb6fd08562595aed47bef7326ec144 (patch)
tree79de4fa2c09d73b2ea793db9b0bcd64bcbba1941 /transport-helper.c
parent9971d6d52c5afeb8ba60ae6ddcffb34af23eeadd (diff)
downloadgit-48d9e6ae4bcb6fd08562595aed47bef7326ec144.tar.gz
perl: command_bidi_pipe() method should set-up git environmens
When command_input_pipe and command_output_pipe are used as a method of a Git::repository instance, they eventually call into _cmd_exec method that sets up the execution environment such as GIT_DIR, GIT_WORK_TREE environment variables and the current working directory in the child process that interacts with the repository. command_bidi_pipe however didn't expect to be called as such, and lacked all these set-up. Because of this, a program that did this did not work as expected: my $repo = Git->repository(Directory => '/some/where/else'); my ($pid, $in, $out, $ctx) = $repo->command_bidi_pipe(qw(hash-object -w --stdin-paths)); This patch refactors the _cmd_exec into _setup_git_cmd_env that sets up the execution environment, and makes _cmd_exec and command_bidi_pipe to use it. Note that unlike _cmd_exec that execv's a git command as an external process, command_bidi_pipe is called from the main line of control, and the execution environment needs to be restored after open2() does its magic. Signed-off-by: Masatake Osanai <unpush@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'transport-helper.c')
0 files changed, 0 insertions, 0 deletions