Вы можете написать скрипт cron, в котором вы можете проверить, отличается ли ветка происхождения HEAD от локальной ветки HEAD:
# check remote head
git ls-remote origin refs/heads/your_branch
#check local head
git rev-parse HEAD
# if remote HEAD is different than local HEAD, then pull
Это решение только для одной ветви (например, your_branch
равно master
). Если вы хотите, я могу написать для вас полный скрипт, который проверит, все ли ваши локальные ветви синхронизированы с удаленными ветками
Мне бы хотелось, чтобы этот скрипт был написан на python, но bash также является опцией.
КСТАТИ
На мой взгляд, автоматическое извлечение не является хорошим решением. Что делать, если у вас есть незафиксированные изменения? Прятать их, а после вытягивания подавать?
Что делать, если у вас есть неопубликованный коммит? Вы должны сделать только чистую тягу или тянуть с rebase?
С доставкой у вас нет таких проблем :)
По моему мнению, автоматическая выборка - намного лучший вариант, и если вы хотите просто объединить изменения с вашим рабочим каталогом git.
Если вместо извлечения вы выберете pull (pull
- это fetch
и merge
), то локально вы должны проверить FETCH_HEAD
, но, пожалуйста, примите во внимание, что FETCH_HEAD
является временным.
Другая проблема заключается в том, что если в вашем хранилище есть подмодули.