Я пытаюсь написать сценарий оболочки, который выполняет следующие действия:
- Проверяет удаленный репозиторий git на предмет внесения изменений.
- Если есть изменения в удаленном репозитории git, потяните эти изменения.
- Перебирает новые или измененные файлы.
В ходе своих исследований я нашел некоторые из необходимых команд для выполнения этих задач, но мне не удалось заставить их работать вместе в сценарии оболочки.
Вот сценарий с некоторыми из имеющихся у меня команд:
#!/bin/sh
#Check if there are any changed files
git --git-dir="/dir/.git" fetch origin
if git --git-dir="/dir/.git" log HEAD..origin/master --oneline
then
#Output the modified files from the last pull
git --git-dir="/dir/.git" diff --name-status ORIG_HEAD..
fi
Вот что мне не удалось заставить работать с командами в этом скрипте:
- Оператор if для проверки наличия изменений или не всегда верен. Я пробовал операторы if с другими командами git, и они также всегда верны. Кажется, что git не работает как обычные команды оболочки, когда вы получаете ответ 0 или 1. Как я могу заставить команду git, подобную этой или другие команды git, возвращать правильные ответы в операторе if?
- Как я могу назначить переменные, выводимые из команды, чтобы увидеть измененные файлы в массиве, чтобы я мог перебирать их, используя for?
Если в этом случае команды в моем сценарии не работают, что лучше?
Изменить: Извините, должно было быть более ясным, когда я просматриваю измененные файлы, которые мне нужно вытащить из удаленного репозитория, прежде чем я перебираю файлы, чтобы при работе с этими файлами у меня были последние изменения.