Git: автоматическое вытягивание из репозитория?


есть ли способ настроить git таким образом, что он прослушивает обновления из удаленного РЕПО и будет тянуть всякий раз, когда что-то меняется? В случае использования я хочу развернуть веб-приложение с помощью git (поэтому я получаю контроль версий развернутого приложения), но хочу поместить "центральное" репозиторий git на Github, а не на веб-сервер (интерфейс Github просто soooo nice).

кто-нибудь получил эту работу? Как это делает Героку? Мои Google-фу не в состоянии дать мне какие-либо соответствующие результаты.

5 63

5 ответов:

Git имеет "крючки", действия, которые могут быть выполнены после других действий. То, что вы, кажется, ищете,-это "пост-приемный крючок". В Администраторе github вы можете настроить url-адрес после получения, который будет поражен (с полезной нагрузкой, содержащей данные о том, что было только что нажато) каждый раз, когда кто-то нажимает на ваше РЕПО.

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

на unix-likes вы можете создать задание cron, которое вызывает "git pull" (каждый день или каждую неделю или что-то еще) на вашем компьютере. В windows вы можете использовать планировщик задач или команду" AT", чтобы сделать то же самое.

существуют программы непрерывной интеграции, такие как Jenkins или Bamboo, которые могут обнаруживать коммиты и запускать операции, такие как сборка, тестирование, пакет и развертывание. Они делают то, что вы хотите, но они тяжелы с зависимостями, трудно настроить, и в конце концов они могут использовать периодическую проверку против репозитория git, что будет иметь такой же эффект, как вызов git pull by cron каждую минуту.

вы можете написать сценарий для достижения этой цели, выполнив следующие действия:

  1. получить идентификатор фиксации удаленной головки
  2. сравните идентификатор с локальной головкой
  3. если они разные, используйте git pull и используйте команду deploy
  4. Если то же самое, пройдите
  5. напишите задание cron для выполнения скрипта (Примечание : предотвращение дублирования выполнения.)

Я знаю, что этот вопрос немного устарел, но вы можете использовать журнал windows и git для автоматического заполнения вашего проекта с помощью webhook и php (предполагая, что ваш проект включает веб-сервер. Смотрите мою суть здесь : https://gist.github.com/upggr/a6d92e2808e9628ebe0d01fd93569f4a