Умные способы использовать подмодули git с взаимозависимыми репозиториями - PullRequest
1 голос
/ 24 марта 2019

У нас есть несколько более крупный проект, который организован в различных взаимозависимых репозиториях git, следуя древовидной структуре без рекурсии. Далее я попытаюсь изобразить наименьший возможный пример, который бы выделил проблему, которую я пытаюсь решить, даже если в нашем случае глубина дерева может быть относительно большой. Предположим, что система репозиториев и зависимостей подмодулей выглядит следующим образом (обозначение «->» означает использование в качестве подмодуля):

A
B -> A
C -> A, B

Если я использую git clone --recursive для C, произойдет следующая структура каталогов:

C/
C/A
C/B/A

Это повторение также произойдет внутри каталога .git: вы найдете .git/modules/A, .git/modules/B и .git/modules/B/modules/A. Хотя я понимаю причины этого, в нашем конкретном случае было бы полезно, если бы структура была больше похожа на следующую (запись: "->" символическая ссылка):

C/A
C/B
C/B/A -> C/A

Итак, если бы я обновил A внутри B, он также был бы обновлен в C, и мне просто нужно было бы зафиксировать изменения в этих репозиториях, и они остались бы синхронизированными. Возможно ли это как-то внутри Git? Существуют ли практические решения этой проблемы?

1 Ответ

0 голосов
/ 25 марта 2019

Вы также можете связать наоборот:

# at the root of C
ln -s B/A A
...