Git не распознает удаленный с помощью php/exec, но хорошо в bash
Я использую VM (hometead/laravel), чтобы попытаться создать шаблонное хранилище.
Однако, хотя все это, похоже, работает нормально, но когда дело доходит до нажатия, кажется, что оно никогда не распознает пульт.
fatal: No such remote 'origin'
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.
Выше приведены 2 ошибки, которые я обычно получаю.
Я попробовал несколько команд для установки пульта.
git remote add origin https:://url.git
- не добавляет удаленный (проверил git config)
git remote set-url origin https:://url.git
- не добавляет удаленный (проверил git config)
git config remote.origin.url https:://url.git
- устанавливает URL, но все еще не работает.
Это частные репозитории, и я использую https с пользователем:pass, чтобы справиться с этим, поскольку я не могу легко управлять ключами ssh с этой настройкой (другими словами, я вынужден использовать HTTPS таким образом).
Попробовав команды через php, я перехожу в каталог в ssh и запускаю push. Работает нормально (если я использую третий вариант выше). я использовал exec
и https://github.com/kbjr/Git.php но в обоих случаях возникает одна и та же проблема.
Версия Git: 2.7.2
Версия PHP: 7.1.0
Единственная мысль, которая у меня есть, заключается в том, что технически существует git-репо выше сгенерированного. Я создаю репо во временной папке в laravel, а затем генерирую "шаблон", прежде чем помещать его в репо, которое я создаю в процессе (github api). Когда все готово, я удаляю его локально. Однако я не вижу ошибок, которые могут быть связаны с проблемами, вызванными "репо под репо"
1 ответ
Догадаться.
Заканчивается, если вы создаете репозиторий с использованием API github, он фактически не создает репозиторий, прежде чем вернуть ответ об успешном завершении. Таким образом, вам нужно заставить скрипт ждать до нажатия. В этом случае заставляет его ждать 5 секунд (sleep(5);
кажется, решил это.