我有一个相当大的项目,有很多依赖项。项目存储在git存储库中,依赖项存储在作为子模块链接的专用git存储库中。依赖项可以具有进一步的依赖性(同样,使用git子模块)。
这很有效。但是,如果两个依赖项同时需要第三个依赖项,则会在更新时遇到麻烦。
依赖关系图如下所示:
[Main Repo]
|
|-- [ModuleA]
| |
| \-- [ModuleC]
|
\-- [ModuleB]
|
\-- [ModuleC]
现在我更新ModuleA和ModuleB中的子模块指针。这样两个模块都是自包含的。但是,这是一项很多工作。
这个问题通常在更大的项目中解决了吗?我正在寻找解决此类问题的最佳实践。
谢谢!
答案 0 :(得分:1)
在更大的项目中,您想要的是将所有依赖项保留在一个级别。
这并不意味着ModuleA
和ModuleB
不会将自己的依赖关系保留到ModuleC
。
这意味着您当前的主要父回购包含对ModuleC
的依赖,该C
充当ModuleC
的引用版本。
这也允许您检测何时必须覆盖依赖关系,在您的情况下,对于您的两个子模块之一:ModuleA
或ModuleB
的{{1}}依赖关系必须是被你的主要回购中的ModuleC
覆盖。
答案 1 :(得分:0)
我们使用Quack从其他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']
通过上面的配置,它从第一个模块配置中指定的提供的github存储库创建1个目录,另一个是从给定的repo中提取和创建文件。
其他开发人员只需要运行
$ quack setup
它从上面的配置中提取代码。
希望这可以解决重用多个模块的问题。