周围目录的git子树或子模块

时间:2014-04-28 02:49:39

标签: git git-submodules git-subtree

我们通常处理与CodeIgniter共享类似目录结构的项目,其中有一个围绕我们的应用程序代码的框架(在父目录和兄弟目录中)。我们有两个主要的工作流程需要管理:

  1. 在私有(非github)存储库中维护我们的本地应用程序代码(例如/application目录)
  2. 从外部框架中提取上游更改,提交拉取请求等
  3. 我在研究中发现的最接近的方法是使用fake submodules,使用一些.gitignore或某种相关的伏都教,但这似乎非常脆弱。有没有更好的方法来设置我们的存储库和目录?

1 个答案:

答案 0 :(得分:1)

更好的方法是按照优先顺序将时间投入到(非假的)子模块或子树的学习曲线中。你的评估是正确的 - “虚假子模块”是一种过度简化的脆弱尝试,这在琐碎的案例中就足够了,但不适用于许多项目和多个合作者,他们对分支,历史有不同的看法并发布子项目的管理。

如果您确实希望将所有内容视为一个巨大的项目,您可以查看git子树合并,但我建议您不要这样做,因为子模块特别适合管理具有不同发布计划的第3部分依赖项。

根据您的问题,我了解您的设置如下所示,简化,

parent-framework
|-- application
|-- framework
`-- other-framework

框架(即frameworkother-framework和可能parent-framework)是在github上管理的独立项目。

所以这就是我要做的,

  1. 管理独立私人仓库中的application存储库
  2. 分叉框架
  3. 创建一个超出parent-framework级别的超级项目,将所有内容绑定在一起,其中所有框架(包括您的私有application仓库都是子模块。
  4. 这将为您提供必要的灵活性,以便根据第三方依赖框架的正交SDLC管理您的application开发线SDLC。

    另请注意,最新版本的git使递归推送(和更新)子模块变得非常容易,因此应该很少关注为框架创建拉取请求的复杂性。