Я пытаюсь использовать PHING для проверки git хранилища как части процесса сборки. PHING использует pear / versioncontrol_ git для обработки git задач. Мой путь к git: C:\Program Files\Git\bin\git.exe
.
Две команды запускаются по этому пути, <gitpath> --version
и <gitpath> clone -q -repo=...
<gitpath> --version
работает нормально. <gitpath> clone...
выдает ошибку, что "C: \ Program" не является допустимым путем. Я смущен, почему это может быть проблемой, когда точно такой же код может выполнить команду --version без ошибок.
Похоже, что происходит то, что кавычки удаляются, но только иногда.
Это неправильный код:
public function execute($arguments = array(), $options = array())
{
$command = $this->createCommandString($arguments, $options);
$descriptorspec = array(
1 => array('pipe', 'w'),
2 => array('pipe', 'w'),
);
$pipes = array();
$resource = proc_open($command, $descriptorspec, $pipes, realpath($this->git->getDirectory()));
$stdout = stream_get_contents($pipes[1]);
$stderr = stream_get_contents($pipes[2]);
foreach ($pipes as $pipe) {
fclose($pipe);
}
$status = trim(proc_close($resource));
if ($status) {
$message = "Some errors in executing git command . $command\n\n"
. "Output:\n"
. $stdout."\n"
. "Error:\n"
. $stderr;
var_dump($message);
throw new VersionControl_Git_Exception($message);
} else {
var_dump('No errors in ' . $command);
}
return $this->stripEscapeSequence($stdout);
}
И это вывод двух вызовов к коду:
C:\PHP Projects\Build\vendor\pear\versioncontrol_git\VersionControl\Git\Util\Command.php:240:
string(61) "No errors in "C:\\Program Files\\Git\\bin\\git.exe" --version"
C:\PHP Projects\Build\vendor\pear\versioncontrol_git\VersionControl\Git\Util\Command.php:237:
string(306) "Some errors in executing git command . "C:\\Program Files\\Git\\bin\\git.exe" clone -q --branch="master" "--REDACTED--" "C:\PHP Projects\Build\build"
Output:
Error:
'C:\\Program' is not recognized as an internal or external command,
operable program or batch file.