Вот то, что я пытаюсь сделать:
У меня есть репозиторий GitHub, часть которого я хотел бы сделать сеть просматриваемой. Прямо сейчас я клонировал репозиторий на своем собственном сервере, и он работает хорошо, но чтобы усовершенствовать его, я должен вручную войти в систему и вытянуть последние изменения.
Я не уверен, является ли это лучшей идеей (или лучшим подходом), но я хотел бы, чтобы удаленный сервер автоматически вытянул каждый раз, когда кто-то продвигает в репозиторий. GitHub помогает достаточно для выполнения сценария, когда кто-то продвигает, но я не уверен, как вытянуть, как только кто-то делает это.
Я использовал PHP для простоты, но просто делал что-то как git pull
естественно не работает из-за полномочий. Действительно ли это - плохая идея или является там другим способом достигнуть того, что я хочу сделать? Это походит на единый набор, но я не был уверен.
Спасибо.
Если легко запустить скрипт для push , вы можете настроить хуки для push:
Затем вы можете связать это с крючком на вашем «живом» repo для обновления самого себя (посредством «git merge», слияния содержимого вашего голого репо с вашим «живым» репо) всякий раз, когда ваше голое репо что-то нажимает.
Вы получаете желаемый эффект: любое нажатие на репозиторий GitHub (полагаю, для определенной ветки) вызовет обновление репозитория «живого» веб-сервера.
Я сделал что-то, что работает почти точно так же, за исключением того, что "удаленное" репо, которое получает push, находится на том же компьютере, что и репо, которое потом тянет. Верно (и важно), что один и тот же набор пользователей имеет разрешения в обоих репозиториях. (Но это должно быть нормально; вы не хотите, чтобы случайные люди толкали ваше репо.) В любом случае у меня просто есть обработчик git post-update, вызывающий сценарий оболочки, который делает за меня тягу. Единственный сложный момент заключается в том, что вам нужно очистить среду (я использовал env -i
, или вы можете отключить переменные, связанные с git), иначе извлечение запутается.