Подтвердить что ты не робот

Git: авто вытащить из репозитория?

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

Кто-нибудь получил эту работу? Как это делает Heroku? Мой Google-fu не дает мне никаких релевантных результатов.

4b9b3361

Ответ 1

Git имеет "крючки", действия, которые могут быть выполнены после других действий. То, что вы, похоже, ищете, - это "post-receive hook". В администраторе github вы можете настроить URL-адрес после получения, который будет удален (с полезной нагрузкой, содержащей данные о том, что было просто нажато) каждый раз, когда кто-то подталкивает ваше репо.

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

Ответ 2

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

Ответ 3

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

Ответ 4

Вы можете написать script, чтобы добиться этого, выполнив следующие действия:

  • получить удаленный идентификатор фиксации HEAD
  • сравнить идентификатор с локальной HEAD
  • если они разные, используйте git pull и используйте команду deploy
  • если то же самое, пройдите
  • напишите задание cron для выполнения script (ПРИМЕЧАНИЕ: предотвратите выполнение дубликатов.)

Ответ 5

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