2011-12-16 2 views
1

Скажем, у меня суперпроект с N подмодулями. Что я создал после этого руководства: Git Submodule TutorialGit распределенный рабочий процесс с подмодулями

Итак, у меня есть общедоступные хранилища для всех вспомогательных модулей плюс публичное репо для суперпроекта, все это на удаленном хосте: machine1/path/to/public/repos.git. Они я буду называть своими публичными репозиториями.

Теперь пользователь X клонирует суперпроект из моего публичного репо и тянет все к его частному репо. Все ссылки в его местных .git/config и .gitmodules указывают на мои публичные репозитории.

Я хочу, чтобы пользователь X иметь свой собственный публичный репозиторий, поэтому мы можем использовать распределенный рабочий процесс, описанный здесь: Git Distributed Workflows

Этого пути пользователь X и я могу нажать наши локальные изменения в нашу публичной сделках РЕПО, а затем извлекать изменения публичные репозитории друг друга. Я хочу избежать того, чтобы мы оба вынуждены были перейти к тем же публичным репозиториям.

С .gitmodules в локальном репо X в моем публичном репозитории X необходимо изменить ulr, чтобы они указывали на его публичные репозитории. Пожалуйста, имейте в виду, что .gitmodules заработали, поэтому мы столкнулись с конфликтом, если X совершает ошибку & публикует .gitmodules после изменения его ссылки на его публичные репозитории, а затем я вывожу изменения из своего публичного репо (мой местный .gitmodules будет ссылаться на его публикацию repos вместо моего, который не является желаемым результатом).

Так что вы думаете, будут лучшей альтернативой:

  • Удалить .gitmodules из дерева репозитория и добавить его в .gitignore поэтому не гусеничных больше.
  • Хранить .gitmodules нестационарный. Я не знаю, почему, но это кажется мне плохой идеей.
  • Использование git --update-index assume-unchanged .gitmodules

Любой из этих вариантов имеет тот недостаток, что .gitmodules бы стер, если один работает git clean или отбросить все неотслеживаемые файлы.

Как сохранить изменения в X .gitmodules, чтобы постоянно ссылаться на его собственное публичное репо и не беспокоиться о том, чтобы случайно стереть конфигурацию или вытащить нежелательные изменения?

ответ

1

вы можете достичь этого, добавив дополнительные пульты к вашим подполам. Кроме того, удаленные URL-адреса god subodule из содержащего репо только синхронизируются при добавлении опции -init. Ничто не мешает вам выполнять добавление, обновление, init, а затем изменение URL-адреса в репо для этого пульта. Последующие обновления подмодуля не изменят этот URL-адрес, если вы не добавите опцию -init.

+0

Прошу прощения, мне потребовалось столько времени, чтобы принять этот ответ в тот момент, когда я впервые прочитал его, я не понял его, теперь это кажется очевидным. –

Смежные вопросы