Я хотел бы создать простой скрипт, который будет загружать плагины из удаленных репозиториев в каталог. У меня есть массив URL-адресов для файлов Git на удаленном сервере — как этот из GitHub https://github.com/nette/sandbox.git. GitHub поддерживает загрузку ZIP-архивов, но у меня есть плагины из много других репозиториев который не предлагает эту опцию.
Возвращаясь к моему вопросу — есть ли вариант, как получить архив вместо загрузки полного репозитория и экспорта из него архива, используя git в командной строке? Я нашел этот вопрос — Сделать "мерзавец экспорт" (лайк "SVN экспорт")? — но это не было бы возможно при использовании PHP.
этот сообщение дает вам подробную информацию об экспорте Git, как вы упомянули.
git archive HEAD —format = zip> archive.zip
Вы также можете заархивировать пульт, используя опцию —remote =. Просто
Имейте в виду, что это не работает с пультами GitHub, так как они
Рекомендуем использовать вместо этого кнопку загрузки. С любым другим
хотя он должен работать нормально, и проверьте страницу руководства, если вы
возникли проблемы.
но проблема с этим методом, когда я попробовал его с обоими GitHub а также bitbuck я получил remote doesn't support protocol
ошибка .
Я просто написал код для общего решения на моей машине, и он работает для меня. позвольте мне поделиться с вами. Вы можете выполнить команду оболочки, используя php используя shell_exec .
<?php
//clearing a folder named test if it exist(avoiding git errors)
shell_exec('rm -rf test');
//cloning into test folder
shell_exec('git clone https://github.com/nette/sandbox.git test');
//archiving
shell_exec('cd test && git archive HEAD --format=zip > archive.zip');
//copying to root folder
shell_exec('cp test/archive.zip archive.zip');
//removing the temp test folder we created
shell_exec('rm -rf test');
?>
shell_exec не будет работать, если PHP безопасный режим включен вам может потребоваться установить соответствующие разрешения для скрипта и т. д. но я думаю, что это идея начать с php, чтобы получить то, что вы хотите.
Других решений пока нет …