Задать вопрос

Почему не срабатывает git commit в shell_exec()?

Нужно запустить команду гиту из php-скрипта. Прочие команды работают отлично, а именно commit не делает ничего, и ничего не выводит.

То есть если делаю:
$git_branches = shell_exec('git add ../'.$_GET["FILE"]);

То все отлично.

Если делаю:
$git_branches = shell_exec("git commit -m '".$_GET["COMMIT_TITLE"]."'");

То получаю пустоту.

Для получения хоть какой то информации, он правильном местонахождении и тд, пробовал такой вариант:
$git_branches = shell_exec("cd ".$_SERVER["DOCUMENT_ROOT"]." && ls -la && git commit -m '".$_GET["COMMIT_TITLE"]."'");
pre($git_branches);

Выводит список файлов и директорий из корня проекта, все как нужно. Следовательно оттуда и пытается сделать коммит, опять же, как мне и требуется. Но сама команда commit не срабатывает.
  • Вопрос задан
  • 478 просмотров
Подписаться 2 Средний 2 комментария
Решения вопроса 1
vekov
@vekov Автор вопроса
Для отладки стоит использовать такую схему:

$git_branches = exec('git push origin master:'.$_GET["REMOTE"].' 2>&1', $stdin, $stderr);


То есть shell_exec меняем на exec, и добавляем "2>&1"; Тогда сможем видеть ошибки.

Сама команда commit не работала, потому что в конфиге был не верно задан пользователь. И потому что у пользователя было не достаточно прав. Назначил его владельцем папки .git. Проблема решилась
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
$git_branches = shell_exec('git commit -m "'.$_GET["COMMIT_TITLE"].'"');

Так попробуйте. Возможно git чувствителен к типу кавычек. Но это не точно.
Ответ написан
@flx12
$str = 'git -c user.email="email" -c user.name="login" commit -m "message"';
exec($str,$stdin,$stderr);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы