如何在具有重叠依赖关系的项目中组织git?

时间:2015-06-04 15:47:44

标签: git dependencies dependency-management project-organization

目前,我正致力于将主要使用C ++代码的单片SVN存储库(单个存储库中的所有应用程序和库)转换为git存储库。我想组织它,以便库和应用程序在自己的存储库中。

然而,我正在努力寻找一种处理内部(即我们自己的代码)和重叠依赖关系的好方法。问题的存在是因为许多库和应用程序相互依赖 - 通常很深。

例如,想象下面的(非常简单的)项目结构:

  • app1取决于lib1 lib2
  • lib1依赖于lib2 lib3
  • lib2依赖于lib3
  • lib3没有依赖项

App1可以是游戏,lib1是图形库,lib2是数学库,lib3是实用程序库。请记住,库也用于许多其他应用程序,并且经常更新。

理想情况下,我希望在克隆app1时获得以下目录结构:

  • APP1
      • LIB1
      • LIB2
      • LIB3

当我克隆时,我得到以下内容,例如,lib2:

  • LIB2
      • LIB3

我考虑过使用git子树或子模块,每个项目都记录自己的依赖项。但是,项目目录布局将变为这样(为了便于阅读,我删除了中间的libs目录):

  • APP1
    • LIB1
      • LIB2
        • LIB3
      • LIB3
    • LIB2
      • LIB3

正如您所看到的,lib3和lib2多次被放置在项目中。显然这是不可取的。

我可以通过为每个克隆所有相关依赖存储库的应用程序和库编写自定义脚本来解决此问题。当我这样做时,很难跟踪特定提交时代码的确切状态。

有没有一种很好的方法来处理git的内部和重叠依赖?或者我正在努力,因为我正在努力实现与git中的事情相反的方式?

0 个答案:

没有答案