git子模块可以有自定义根吗?

时间:2011-08-13 04:44:43

标签: git git-submodules

我目前有两个项目,一个框架和一个应用程序。框架的存储库包含许多在应用程序中无用的目录。我希望能够配置git子模块,只将我想要的目录从我的框架存储库复制到我的应用程序目录的根目录。

这是我的项目目录:

框架

  • /
    • red-locomotive / - 我想要使用的框架
    • modules / - 具有额外模块的目录
    • lib / - 引擎依赖的库
    • 例子/ - 一些测试
    • readme.md等...

应用

  • /
    • red-locomotive / - 来自框架
    • modules / - 来自框架
    • lib / - 来自框架
    • kernel.js等......

您可以看到我希望应用程序根目录中的框架存储库中的三个目录。 git子模块可以这样做吗?

3 个答案:

答案 0 :(得分:2)

不。子模块将克隆它指向的整个存储库。此外,您无法从子模块中删除任何文件夹,因此在包含它之后无法对其进行修改。

在我工作的地方,我们发现模块非常痛苦。每次重新部署时(取决于您的方法),您都必须检查每个子模块并重新初始化/添加它。我们尝试将它用于我们的开源添加项,如tinymce和tcpdf,但是这种方法很有用。

答案 1 :(得分:1)

您可以这样做,但每个共享文件夹必须是它自己独立的子模块。假设根级别没有需要共享的文件。

答案 2 :(得分:1)

虽然您无法直接在根目录中的框架存储库中添加任意目录,但您可以使框架成为子模块,并使用a sparse checkout仅获取工作树中所需的那些部分(可能与{结合使用} {3}})。