Git子模块与依赖关系管理?

时间:2018-03-07 00:52:00

标签: git dependencies git-submodules dependency-management ivy

在我工作的地方,我们使用一个名为apache Ivy的工具进行依赖管理。但是,我最近一直在研究一个拥有多个存储库的项目,因此,我使用git超级项目来维护所有这些项目。 git子模块对我来说很棒,到目前为止,我更喜欢它们而不是常春藤。以下是我喜欢的常春藤主题:

  • 无论何时对两个或多个彼此依赖的存储库进行更改,您都可以只提交到超级项目,因此很明显依赖于什么。在常春藤,你必须做一个令人烦恼的全新版本。
  • 在超级项目中更好地跟踪您的更改。据我所知,Ivy并没有很好地跟踪你对版本的更改。
  • Git比Ivy更多支持
  • 你只需要了解一个工具,GIT !!!

但是,我的公司拒绝接触git子模块/超级项目。我也一直在做一些研究,似乎很多人不喜欢git子模块,并且它被认为不是一个好的依赖管理"工具。谁能帮我理解为什么?

1 个答案:

答案 0 :(得分:2)

像Apache Ivy这样的依赖管理器的杀手级功能可能是传递依赖解决方案和冲突管理。使用git子模块是不可行的。

来自Apache Ivy features页面:

  

想象一个经常被软件团队重用的组件,并且该组件具有自己的依赖关系。如果没有良好的依赖关系管理工具,每次重用此组件时,必须重复其所有依赖关系。使用Apache Ivy,它有所不同:只需为组件编写一次依赖文件,并从重新使用此组件时已经完成的工作中受益。

我认为重要的另一个功能是:

  • 下载已编译的软件包,而不必每次都编译它们

  • 依赖关系报告

大家都这么说,我只建议你的依赖树真的是git子模块,并且编译依赖代码很便宜。