Примечание: это с 2009 года и, возможно, тогда было хорошо, но сейчас есть лучшие варианты.
Мы используем это. Это называется git-pup
:
#!/bin/bash
# Exists to fully update the git repo that you are sitting in...
git pull && git submodule init && git submodule update && git submodule status
Просто поместите его в подходящий каталог bin (/ usr / local / bin). Если в Windows вам может понадобиться изменить синтаксис, чтобы заставить его работать :)
Обновить:
В ответ на комментарий оригинального автора о включении всех заголовков всех подмодулей - это хороший вопрос.
Я почти уверен, что git
не имеет команды для этого внутри. Для этого вам нужно будет определить, что HEAD на самом деле для подмодуля. Это может быть так просто, как сказатьmaster
это самая современная ветка и т. Д ...
После этого создайте простой скрипт, который выполняет следующие действия:
- проверить
git submodule status
наличие «модифицированных» репозиториев. Первый символ выходных строк указывает на это. Если суб-репо изменен, вы НЕ МОЖЕТЕ продолжить.
- для каждого репо в списке, перейдите в его каталог и запустите
git checkout master && git pull
. Проверьте на ошибки.
- В конце я предлагаю вам распечатать дисплей для отображения текущего статуса подмодулей - возможно, предложить им добавить все и зафиксировать?
Я хотел бы отметить, что этот стиль не совсем то, для чего были созданы подмодули git. Как правило, вы хотите сказать, что «LibraryX» имеет версию «2.32» и будет оставаться такой, пока я не скажу «обновить».
Это в некотором смысле то, что вы делаете с описанным сценарием, но просто более автоматически. Требуется осторожность!
Обновление 2:
Если вы работаете на платформе Windows, вы можете захотеть использовать Python для реализации скрипта, так как он очень эффективен в этих областях. Если вы используете unix / linux, тогда я предлагаю просто скрипт bash.
Нужны какие-либо разъяснения? Просто оставьте комментарий.