我们有一个更大的项目,它在一个没有递归的树结构之后组织在各种相互依赖的git存储库中。在下文中,我试图描绘一个最小的可能示例,它将突出我试图解决的问题,即使在我们的例子中树的深度可能相对较大。假设存储库和子模块依赖关系系统如下(符号“ - >”表示用作子模块):
A
B -> A
C -> A, B
如果我使用git clone --recursive
for 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中是否有可能?这个问题有实用的解决方案吗?
你也可以用其他方式链接:
# at the root of C
ln -s B/A A