Это должно работать, как post-update hook
на родительском репо :
Вам необходимо отслеживать файл .gitmodules
на наличие любых изменений, чтобы обнаружитьлюбые изменения в этом файле (указывающие на то, что другой клон вашего родительского репо изменил подмодуль и зафиксировал новую ссылку в родительском репо).
Затем вы можете:
- определить, какие подмодули изменились
- решите, хотите ли вы обновить ваши подмодули (
git submodule update --recursive
) - перекомпилировать соответствующие подмодули
Но это предполагает клонродительское репо было изменено для ссылки на новые коммиты ваших подмодулей.
Если ваши подмодули обновляются независимо от какого-либо родительского репо, то тот же хук post-update
(все еще в родительском репо) при извлечении / обновленииродительского репо:
- зайти в каждый подмодуль и выполнить выборку
- проверить, вводит ли выборка какие-либо новые коммиты
- решить, хотите ли выподнимите ваши подмодулина сегодняшний день, на этот раз, извлекая изменения из подмодулей
- , вернитесь в родительское репо и подтвердите, чтобы зарегистрировать новый SHA1 из подмодулей изменений
- перекомпилирует те, которые были необходимыa
git pull
(т. е. это изменилось)
Вы можете установить хук после обновления для каждого из подмодулей, но вышеупомянутый подход масштабируется лучше, когда вы добавляете или удаляете подмодули из родительского репо, какон централизует процесс обнаружения в одном месте (хук post-update
родительского репо).