Скажем, у меня есть суперпроект с N подмодулями. Который я создал в соответствии с этим руководством: Git Submodule Tutorial
Итак, у меня есть общедоступные репозитории для всех подмодулей плюс общедоступный репозиторий для суперпроекта, и все это на удаленном хосте: machine1/path/to/public/repos.git
. Их я буду называть своими публичными репозиториями.
Теперь пользователь X клонирует суперпроект из моего общедоступного репозитория и загружает все в свое личное репо. Все ссылки в его локальных .git/config
и .gitmodules
указывают на мои публичные репозитории.
Я хочу, чтобы у пользователя X был собственный общедоступный репозиторий, чтобы мы могли использовать распределенный рабочий процесс, описанный здесь: Распределенные рабочие процессы Git.
Таким образом, пользователь X и я можем отправлять наши локальные изменения в наши собственные общедоступные репозитории, а затем извлекать изменения из общедоступных репозиториев друг друга. Я хочу, чтобы нам обоим не приходилось нажимать на одни и те же общедоступные репозитории.
Поскольку .gitmodules
в локальном репозитории X указывает на мои общедоступные репозитории, X необходимо изменить ulr, чтобы они указывали на его общедоступные репозитории. Пожалуйста, имейте в виду, что .gitmodules зафиксирован, поэтому мы столкнемся с конфликтом, если X зафиксирует и опубликует .gitmodules
после изменения его для ссылки на его общедоступные репозитории, а затем я извлеку изменения из его общедоступного репозитория (мой локальный .gitmodules
будет ссылаться на его общедоступный репозиторий). репозиториев вместо моего, что не является желаемым результатом).
Итак, что, по вашему мнению, было бы лучшей альтернативой:
- Удалите
.gitmodules
из дерева репозитория и добавьте его в.gitignore
, чтобы он больше не отслеживался. - Оставьте
.gitmodules
неустановленным. Не знаю почему, но мне кажется это плохой идеей. - Используйте
git --update-index assume-unchanged .gitmodules
Любой из этих вариантов имеет тот недостаток, что .gitmodules
будет уничтожен, если запустить git clean
или удалить все неотслеживаемые файлы.
Как я могу сохранить изменения в .gitmodules
X, чтобы постоянно ссылаться на его собственный общедоступный репозиторий и не беспокоиться о случайном удалении конфигурации или извлечении нежелательных изменений?