Примечание: это с 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 вам может потребоваться изменить синтаксис, чтобы заставить его работать:)
Обновление:
В ответ на комментарий оригинального автора о включении всех HEAD всех подмодулей - это хороший вопрос.
Я почти уверен, что git
не имеет команды для этого внутри. Для этого вам нужно будет определить, что HEAD на самом деле для подмодуля. Это может быть так же просто, как сказать, что master
является самой современной веткой и т. Д. *
После этого создайте простой скрипт, который выполняет следующие действия:
- проверьте
git submodule status
для «модифицированных» репозиториев. Первый символ выходных строк указывает на это. Если суб-репо изменен, вы НЕ МОЖЕТЕ продолжить.
- для каждого из перечисленных репо, перейдите в его каталог и запустите
git checkout master && git pull
. Проверьте на ошибки.
- В конце я предлагаю вам распечатать дисплей для отображения текущего статуса субмодулей - возможно, предложить им добавить все и зафиксировать?
Я хотел бы отметить, что этот стиль не совсем то, для чего были созданы подмодули git. Как правило, вы хотите сказать, что «LibraryX» имеет версию «2.32» и будет оставаться такой до тех пор, пока я не скажу «обновить».
Это в некотором смысле то, что вы делаете с описанным сценарием, но просто более автоматически. Требуется осторожность!
Обновление 2:
Если вы работаете на платформе Windows, вы можете захотеть использовать Python для реализации скрипта, так как он очень эффективен в этих областях. Если вы используете unix / linux, то я предлагаю просто скрипт bash.
Нужны пояснения? Просто оставьте комментарий.