我有这个项目结构:
root
|
+-- SHARE
+-- Project1
+-- Project2
+-- Project3
所有项目都引用项目分享。
所以我在每个文件夹中创建了4个repos。 然后我尝试将SHARE作为子模块添加到Project1,但我没有得到我想要的,因为Git将所有源文件从SHARE复制到Project1 \ SHARE。我想要子模块SHARE将文件签出到文件夹SHARE,它与Project1并行。
是否可以将SHARE作为Project1的子模块引用而无需从SHARE复制源文件? 或者是否有更好的方法告诉Project1的repo它依赖于repo SHARE?
我正在使用Windows7和VS2010以及Git Extensions。
答案 0 :(得分:1)
子模块的意思是主存储库的版本确定子模块的版本。如果您不需要此功能,则可能根本不需要使用子模块。
现在,如果需要此功能,那么您的结构没有意义,因为不同的Projects可能需要不同版本的SHARE。这就是为什么建议将SHARE复制到每个存储库中,这样他们就不会发生冲突,试图获得他们想要的SHARE版本。
答案 1 :(得分:0)
如果您的所有项目都可以引用SHARE
的相同SHA1,并且所有将从您在SHARE
中进行的任何修改中受益,那么您应该声明全部4目录(3 Projects
,1 SHARE
)作为root中的子模块,它将是父存储库。
但这也意味着仅Project1
就无法记录所需的SHARE
确切版本。
因此,如果所有3个Projects
都紧密耦合,那么你的结构才有意义(你无法在其他两个上工作而无需工作)。