Какие штуковины называются при обновлении субмодуля? - PullRequest
2 голосов
/ 01 мая 2011

Итак, вот ситуация. У меня есть git-репозиторий с несколькими подмодулями. Каталог верхнего уровня и все его подмодули содержат решения Visual Studio 2010.

Репозиторий верхнего уровня зависит от актуальности подмодулей, и их необходимо перестраивать при каждом обновлении. Что я хочу сделать, так как существует произвольное количество подмодулей, так это сделать какую-то зацепку после обновления в git для компиляции только что обновленного подмодуля.

Так что мой вопрос таков: какие хуки (если они есть) вызываются при обновлении подмодуля? Похоже, что после-оформление заказа может быть тем, что я хочу, но я не уверен.

Мы используем TortoiseGit с Git для Windows (msysgit) в качестве бэкэнда, если это имеет значение.

1 Ответ

1 голос
/ 01 мая 2011

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

  • определить, какие подмодули изменились
  • решите, хотите ли вы обновить ваши подмодули (git submodule update --recursive)
  • перекомпилировать соответствующие подмодули

Но это предполагает клонродительское репо было изменено для ссылки на новые коммиты ваших подмодулей.

Если ваши подмодули обновляются независимо от какого-либо родительского репо, то тот же хук post-update (все еще в родительском репо) при извлечении / обновленииродительского репо:

  • зайти в каждый подмодуль и выполнить выборку
  • проверить, вводит ли выборка какие-либо новые коммиты
  • решить, хотите ли выподнимите ваши подмодулина сегодняшний день, на этот раз, извлекая изменения из подмодулей
  • , вернитесь в родительское репо и подтвердите, чтобы зарегистрировать новый SHA1 из подмодулей изменений
  • перекомпилирует те, которые были необходимыa git pull (т. е. это изменилось)

Вы можете установить хук после обновления для каждого из подмодулей, но вышеупомянутый подход масштабируется лучше, когда вы добавляете или удаляете подмодули из родительского репо, какон централизует процесс обнаружения в одном месте (хук post-update родительского репо).

...