子目录中的Git子模块?

Jos*_* M. 5 git git-submodules

假设我有两个git回购.RepoA是一个应该在其他项目中共享的通用回购.ReopB是一些需要访问RepoA中的东西的项目.

RepoA

https://.../RepoA
    /Something
    /Source
        /Project1
        /Project2
        ...
        /ProjectN
Run Code Online (Sandbox Code Playgroud)

RepoB

https://.../RepoB
    /SomethingElse
    /Source
        /MainProject
        /RepoA
            /Project1  #Submodule of RepoA at /Source/Project1
Run Code Online (Sandbox Code Playgroud)

使用上面的图解,您可以看到我要做的是配置一个不是RepoA根目录的子模块,而是配置回购中的特定路径.在这种情况下,我想将RepoB/Source/RepoA/Project1映射到RepoA/Source/Project1.

我做了一些研究,似乎并不是直截了当,也可能是不可能做到这一点.我希望我错了!

我们正在从SVN迁移到GIT,在SVN中,我们使用Externals轻松完成此任务.

注意

我也愿意重组RepoA.但我想保持主体结构.例如,如果我能以某种方式在RepoA/Source/...内分支每个项目,但我不希望这变得复杂.

小智 3

您是否考虑过拆分 RepoA 中的“项目”,使它们成为单独的存储库?您可以使用git subtree split来完成此操作。然后,将 Project1 存储库作为子模块包含在 RepoA 和 RepoB 中。