Я хочу запустить что-то в фоновом режиме, в основном, git pull --rebase
, когда происходят некоторые изменения в моей удаленной ветке. Большую часть времени он работает тихо в фоновом режиме, если нет конфликтов. В случае конфликта он просто оставляет меня на этапе урегулирования конфликта-решения и до тех пор, пока я не разрешу все, что ждет. Как мне это сделать? Есть ли уже существующее программное обеспечение, которое уже делает это?
Git: Как автоматически обновлять мою локальную ветвь, когда происходит изменение в удаленной ветке отслеживания?
Ответ 1
Если у вас нет контроля над удаленным репозиторием, одним из решений является использование crontab для периодического запуска git fetch
или, возможно, даже git pull --rebase
, как вы предлагаете. Точная команда на выбор зависит от вашего рабочего процесса, лично я предпочитаю использовать git fetch
, потому что я могу решить, когда и как слить или переустановить.
Чтобы запустить команду, выполните следующую команду:
crontab -e
И добавьте строку, например:
* * * * * git -C PATH_TO_LOCAL_REPO fetch
или
* * * * * git -C PATH_TO_LOCAL_REPO pull --rebase
Это будет запускать команду git каждую минуту с вашими разрешениями пользователя.
Если вы хотите применить команду git в списке репозитория, вы можете добавить строку:
* * * * * /home/myself/scripts/git-refresh.sh
где git -refresh - это script, которые применяются ко всем вашим репозиториям.
Параметр -C
позволяет запустить команду git без изменения каталога. На странице :
-C <path>
Запуск, как если бы вместо текущего рабочего каталога был запущен git.
Ответ 2
Этот процесс называется синхронизацией fork
Синхронизировать вилку репозитория, чтобы поддерживать ее в актуальном состоянии в восходящем репозитории. К сожалению, у GitHub нет функции автоматической синхронизации. Но, тривиально добавлять в качестве задания cron на сервере, чтобы вам не пришлось делать это вручную. Например:
cd/srv/mirrorrepo; git fetch ведущий ведущий; git нажмите начало оригинала
Следующий плагин может помочь