目前,我正致力于将主要使用C ++代码的单片SVN存储库(单个存储库中的所有应用程序和库)转换为git存储库。我想组织它,以便库和应用程序在自己的存储库中。
然而,我正在努力寻找一种处理内部(即我们自己的代码)和重叠依赖关系的好方法。问题的存在是因为许多库和应用程序相互依赖 - 通常很深。例如,想象下面的(非常简单的)项目结构:
App1可以是游戏,lib1是图形库,lib2是数学库,lib3是实用程序库。请记住,库也用于许多其他应用程序,并且经常更新。
理想情况下,我希望在克隆app1时获得以下目录结构:
当我克隆时,我得到以下内容,例如,lib2:
我考虑过使用git子树或子模块,每个项目都记录自己的依赖项。但是,项目目录布局将变为这样(为了便于阅读,我删除了中间的libs目录):
正如您所看到的,lib3和lib2多次被放置在项目中。显然这是不可取的。
我可以通过为每个克隆所有相关依赖存储库的应用程序和库编写自定义脚本来解决此问题。当我这样做时,很难跟踪特定提交时代码的确切状态。
有没有一种很好的方法来处理git的内部和重叠依赖?或者我正在努力,因为我正在努力实现与git中的事情相反的方式?