Git: автоматическое извлечение из хранилища? - PullRequest
74 голосов
/ 02 апреля 2012

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

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

Ответы [ 5 ]

40 голосов
/ 02 апреля 2012

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

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

16 голосов
/ 02 апреля 2012

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

3 голосов
/ 13 октября 2016

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

1 голос
/ 20 сентября 2017

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

  1. получить идентификатор удаленной фиксации HEAD
  2. сравнить идентификатор с местной HEAD
  3. если они разные, используйте git pull и используйте команду deploy
  4. , если то же самое, передать
  5. написать задание cron для выполнения сценария (ПРИМЕЧАНИЕ: не допускать дублирование выполнения.)
0 голосов
/ 11 марта 2017

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...