git存储库中的依赖关系管理(使用子模块)
我有一个相当大的项目,有很多依赖项。项目存储在git存储库中,依赖项存储在作为子模块链接的专用git存储库中。依赖项可以有更多的依赖项(同样,使用git子模块) 这很有效。然而,如果两个依赖项都需要第三个依赖项,我在更新时会遇到麻烦 依赖关系图如下所示:git存储库中的依赖关系管理(使用子模块),git,dependencies,project-management,git-submodules,Git,Dependencies,Project Management,Git Submodules,我有一个相当大的项目,有很多依赖项。项目存储在git存储库中,依赖项存储在作为子模块链接的专用git存储库中。依赖项可以有更多的依赖项(同样,使用git子模块) 这很有效。然而,如果两个依赖项都需要第三个依赖项,我在更新时会遇到麻烦 依赖关系图如下所示: [Main Repo] | |-- [ModuleA] | | | \-- [ModuleC] | \-- [ModuleB] | \-- [ModuleC
[Main Repo]
|
|-- [ModuleA]
| |
| \-- [ModuleC]
|
\-- [ModuleB]
|
\-- [ModuleC]
现在我更新ModuleA和ModuleB中的子模块指针。这样,两个模块都保持独立。然而,这是一个很大的工作
在大型项目中,这个问题通常是如何解决的?我正在寻找解决这类问题的最佳实践
谢谢 在更大的项目中,您想要的是将所有依赖项保持在一个级别上 这并不意味着
ModuleA
和ModuleB
不保持对ModuleC
的依赖性
这意味着您当前的主父回购协议包含对ModuleC
的依赖,它充当C
的参考版本这还允许您检测何时必须覆盖依赖项,在您的情况下,对于两个子模块中的一个子模块:
ModuleA
或ModuleB
的对ModuleC
的依赖关系必须被主Repo中的对ModuleC
的依赖关系覆盖。我们用于从其他git存储库中提取特定模块。我们需要在不使用提供的存储库的整个代码库的情况下提取代码-我们需要从庞大的存储库中提取非常特定的模块/文件,并且应该在每次运行更新时进行更新
所以我们就这样做到了,
创建配置
name: Project Name
modules:
local/path:
repository: https://github.com/<username>/<repo>.git
path: repo/path
branch: dev
other/local/path/filename.txt:
repository: https://github.com/<username>/<repo>.git
hexsha: 9e3e9642cfea36f4ae216d27df100134920143b9
path: repo/path/filename.txt
profiles:
setup:
tasks: ['modules']
它从上述配置中提取代码
希望这能解决重用多个模块的问题。我明确希望确保ModuleC在我的项目中使用的任何地方都是相同的(我知道子模块机制允许签出不同的版本)。
$ quack setup