программно проверить git на наличие новых версий, если потом вытащить - PullRequest
1 голос
/ 26 марта 2019

У меня есть дроплет digitalocean, запускающий nginx для обслуживания моих html-файлов и перенаправления URL-адресов на бэкэнд с rest-api.

Когда я хочу обновить веб-интерфейс или бэкэнд на сервере, у меня возникает этот утомительный процесс ssh'ing, тянущий либо бэкэнд, либо веб-интерфейс, если веб-интерфейс затем строит и перезапускает службы. Я ищу способ как-то автоматизировать некоторые шаги или все это. Есть какие-нибудь технологии, которые могли бы помочь?

1 Ответ

1 голос
/ 26 марта 2019

Вы можете написать скрипт 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 является временным.

Другая проблема заключается в том, что если в вашем хранилище есть подмодули.

...