Git子模块从子目录开始?

8
假设我有两个Git仓库。RepoA是一个通用的仓库,应该在其他项目中共享。ReopB是一个需要访问RepoA中某些内容的项目。 RepoA
https://.../RepoA
    /Something
    /Source
        /Project1
        /Project2
        ...
        /ProjectN

RepoB

https://.../RepoB
    /SomethingElse
    /Source
        /MainProject
        /RepoA
            /Project1  #Submodule of RepoA at /Source/Project1

使用上面的示例,您可以看到我尝试配置一个子模块,它不是RepoA的根目录,而是存储库中特定路径。在这种情况下,我想将RepoB/Source/RepoA/Project1映射到RepoA/Source/Project1。
我做了一些研究,似乎这并不简单,或者可能无法做到。希望我错了!
我们正在从SVN转移到GIT,在SVN中,我们使用Externals轻松实现了这一点。
注:我也愿意重组RepoA。但我想保持主要结构不变。例如,如果我可以在RepoA/Source/中分支每个项目...但我不想让这变得复杂。

可能是合并子目录中的git存储库的重复问题。 - oyvind
请查看https://dev59.com/OGw15IYBdhLWcg3wv-RM - oyvind
2个回答

3

你考虑过将RepoA中的“Projects”拆分成单独的存储库吗?你可以使用git subtree split来实现这一点。然后,你可以在RepoA和RepoB中都将Project1存储库作为子模块包含进去。


是的,我想那就是我必须要做的事情。我本来希望不用这样做的。我会研究一下的 - 谢谢。 - Josh M.

0
我为解决这个问题采取的方法是将每个预期从中创建子模块的目录拆分成分支。在您的示例中,我们创建一个名为“branch-Project1”的分支,并将目录Project1的所有内容放入这个新分支中。
然后,在RepoB上运行:
git submodule add -b branch-Project1 https://github.com/<user-name>/RepoA path/to/submodule

这将在RepoB中创建一个位于path/to/submodule的子模块。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接