Git 子模块与依赖管理?

标签 git dependencies git-submodules dependency-management ivy

在我工作的地方,我们使用名为 apache Ivy 的工具进行依赖项管理。但是,我最近一直在开发一个我自己的项目,它有多个存储库,因此,我正在使用一个 git super 项目来维护所有这些项目。 git 子模块对我来说很棒,到目前为止我更喜欢它们而不是 Ivy。以下是我喜欢 Ivy 的主要优点:

  • 每当您对两个或多个相互依赖的存储库进行更改时,您只需提交到 super 项目即可,因此很明显什么依赖于什么。在 Ivy 中,你必须发布一个全新的版本,这很烦人。
  • 在 super 项目中更容易更好地跟踪您的更改。据我所知,Ivy 不会很好地跟踪您对版本的更改。
  • Git 比 Ivy 有更多的支持
  • 你只需要了解一种工具,GIT!!!

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

最佳答案

Apache Ivy 等依赖管理器的 killer 级功能可能是传递依赖 解决和冲突管理。使用 git 子模块无法做到这一点。

来自 Apache Ivy features页:

Imagine a component that's often reused by a software team, and that this component has dependencies of its own. Without a good dependency management tool, each time this component is reused, all its dependencies must be repeated. With Apache Ivy, it's different: simply write a dependency file once for the component, and benefit from the work already done anytime this component is reuse.

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

  • 下载已经编译好的包,而不是每次都编译它们

  • 依赖报告

总而言之,只有当你的依赖树确实存在并且编译依赖代码很便宜时,我才会建议使用 git 子模块。

关于Git 子模块与依赖管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49142414/

相关文章:

git - 克隆和复制 git 仓库有什么区别?

linux - sftp 上传 bash 忽略文件

git - 同一台计算机上的多个 GitHub 帐户?

Git:检查特定提交并获取相应的子模块版本

git hook 语法检查

docker - 如何容器化依赖数据库的服务?

php - Symfony - 依赖项未注入(inject)我的实体监听器类

c# - 在我的项目中查找 namespace 依赖项的工具?

git-submodules - Circleci:带有 AWS ECR orb 的私有(private) git 子模块

git submodule update --remote vs git pull