Мне интересно увидеть другие ответы на этот вопрос, но я боюсь, что вы немного усложняете вещи.
Другим разработчикам нет необходимости клонировать build
для внесения изменений в другие независимые репозитории. Их рабочий процесс должен выглядеть примерно так:
- Клон
apps
.
- Внести изменения в
apps
.
- Push фиксирует до сервера.
Затем, вы (или лучше, периодический или CI-процесс) просто должны сделать git submodule update
на репо build
и затем построить.
Обратите внимание, что разработчики ни в коем случае не должны совершать (или даже касаться) репо build
.
В этом примере каждый подмодуль должен быть полностью автономным хранилищем. Если это не так (то есть, если вам нужно изменить build
, чтобы применить какие-либо изменения в подмодулях), то они должны быть не подмодулями, а подкаталогами build
.
Если разработчикам необходимо выполнить локальную сборку, они должны выполнить один раз:
- Клон
build
- Редактировать .gitmodules так, чтобы каждый подмодуль указывал на их локальное репо
- Запустите
git submodule sync
, чтобы применить изменения к .gitmodules
Их локальная копия build
теперь указывает на их локальные копии подмодулей, а не на «благословенную» копию сервера. Это означает, что они могут использовать build
для тестирования сборки всего проекта, включая свои локальные изменения, не влияя на стабильный код на сервере. Но пользователям не нужно (или не рекомендуется) отправлять эти изменения в build
на сервер. С GitHub вы можете предотвратить несчастные случаи, не добавляя открытые ключи других разработчиков в build
репо.