Запустите команды `git push origin master`, используя переполнение стека

Я разрабатываю приложение, которое имеет слой поверх git, который позволил бы мне выполнять коммиты из веб-браузера вместо того, чтобы переходить в CLI. Git-репо будет на моем собственном сервере. Часть процесса мерзавца git push origin master, но у этого есть запрос пароля.

Exec-код

private function run($command, array $arguments = array()) {
$pipes = array();
$descriptorspec = array(
array('pipe', 'r'),  // STDIN
array('pipe', 'w'),  // STDOUT
array('file', 'temp/error.txt', 'w'),  // STDERR
);
$process = proc_open($command, $descriptorspec, $pipes);
foreach ($arguments as $arg) {
// Write each of the supplied arguments to STDIN
fwrite($pipes[0], (preg_match("/\n(:?\s+)?$/", $arg) ? $arg : "{$arg}\n"));
}
$response = stream_get_contents($pipes[1]);
// Make sure that each pipe is closed to prevent a lockout
foreach ($pipes as $pipe) {
fclose($pipe);
}
proc_close($process);
return $response;
}

и я бы назвал функцию, используя

$git->run('git push origin master', array('username', 'password'));

Выполнение вышеуказанного абсолютно ничего не делает.

Во время отладки вышеуказанного кода я запустил php -i и получил некоторые возвращенные данные. Я тогда побежал aasdashdlashdkashdlто есть сценарий, который я знаю, не существует, и все равно ничего не возвращается и тоже не выводится сообщение об ошибке. Бег git status использование этой функции возвращает вывод, тогда как git add . ничего не возвращает и ничего не делает с git repo.

Что я делаю неправильно? Могу ли я вместо этого использовать сертификаты (но тогда у вас есть проблема с самозаверяющим сертификатом, и я могу разрабатывать не только на своем персональном компьютере, но и на других)?

NB

Я стараюсь оставаться как можно более «ванильным», и мне не нужно добавлять пакеты, хотя я готов, если нет другого решения.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]