Запустите команды `git push origin master` с помощью PHP

Я разрабатываю приложение, которое имеет слой поверх 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

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

0 ответов

Другие вопросы по тегам