Предположим, у меня есть библиотека Common
, которая может использоваться автономно и используется проектами P1
и P2
, поэтому желаемое дерево выглядит как
/Common/.git
...
/P1/.git
.gitmodules # points to remote server
Common/
...
/P2/.git
.gitmodules # points to remote server
Common/
...
Когда я изменяю /Common
, я бы хотел проверить его, используя P1
и P2
перед фиксацией. При обычном наборе команд git submodule
мне нужно было бы зафиксировать с /Common
, нажать на удаленный, а затем вытащить с обоих /P1/Common
и /P2/Common
. Если коммит что-то нарушает, он не может быть изменен, потому что плохое изменение уже опубликовано. Кроме того, я мог бы git remote add quicktest /Common
из /P?/Common
, чтобы иметь возможность вытащить, не касаясь удаленного сервера. Но у этого есть много возможностей для несогласованности, и это грязно, чтобы убрать поврежденные коммиты из /P?/Common
, чтобы они могли быть исправлены в /Common
.
Я бы предпочел, чтобы во время разработки рабочее дерево из /Common
использовалось P1
и P2
, но я не могу сделать /P1/Common
символической ссылкой на /Common
, потому что git submodule
распознает символическая ссылка отличается от каталога. Жесткие ссылки на каталоги не разрешены большинством файловых систем. Я могу жестко связать все файлы, используя
rm -rf /P1/Common
cp -rl /Common /P1/Common
, который работает достаточно хорошо, пока новый файл не будет добавлен к /Common
, и в этом случае этот процесс необходимо повторить. Есть ли элегантный способ для обоих
- продолжает работать
git clone --recursive git://remote/P1.git
для конечного пользователя и
- Позвольте мне легко проверить, что изменения в
/Common
работают с P1
и P2
?