Автоматически тянет на удаленный сервер с помощью Git push? - PullRequest
10 голосов
/ 08 марта 2010

Вот что я пытаюсь сделать:

У меня есть репозиторий GitHub, часть которого я хотел бы сделать доступным для просмотра в Интернете. Сейчас я клонировал репозиторий на своем собственном сервере, и он работает хорошо, но для того, чтобы поддерживать его в актуальном состоянии, мне нужно вручную войти в систему и получить последние изменения.

Я не уверен, является ли это лучшей идеей (или лучшим подходом), но я бы хотел, чтобы удаленный сервер автоматически извлекал информацию всякий раз, когда кто-то отправляет в хранилище. GitHub позволяет достаточно легко запускать скрипт, когда кто-то толкает, но я не уверен, как вытащить его, когда кто-то это сделает.

Я использовал PHP для простоты, но просто делать что-то вроде git pull, естественно, не работает из-за разрешений. Это плохая идея или есть другой способ достичь того, что я хочу сделать? Это похоже на обычную установку, но я не был уверен.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 08 марта 2010

Если легко запустить скрипт для push , вы можете установить хуки для push:

  • с GitHub на пустое (пустое рабочее дерево) репо на вашем веб-сервере
  • от вашего простого репо на веб-сервере до вашего «живого» репо (с рабочим деревом, представляющим ваш веб-сайт)

Затем вы можете связать это с хуком на вашем «живом» репо, чтобы обновлять себя (через «git merge», объединяя содержимое вашего голого репо с вашим «живым» репо) всякий раз, когда ваше голое репо что-либо подталкивает.

Вы получаете желаемый эффект: любой толчок в вашем репозитории GitHub (я полагаю, для определенной ветви) вызовет обновление вашего «живого» репо веб-сервера.

1 голос
/ 21 апреля 2010

Я сделал что-то, что работает почти так же, за исключением того, что «удаленное» репо, которое получает толчок, находится на той же машине, что и репо, которое впоследствии тянет. Это правда (и важно), что один и тот же набор пользователей имеет разрешения для обоих репозиториев. (Но это должно быть нормально; вы не хотите, чтобы случайные люди выдвигали ваше репо.) В любом случае, я просто заставляю ловушку git post-update вызывать сценарий оболочки, который делает тягу за меня. Один хитрый момент заключается в том, что вам нужно очистить окружение (я использовал env -i, или вы можете сбросить переменные, связанные с git), в противном случае извлечение путается.

0 голосов
/ 16 ноября 2013

Вот WebHook, который, возможно, мог бы вам помочь. Я думаю, что это именно то, что вы ищете: Удаленный сервер WebHook

...