【发布时间】:2015-04-24 20:35:39
【问题描述】:
我有一个 Git 项目。让我们将其命名为Proj。
Proj 有两个子模块,Lib 和 Utils。
Lib 也有子模块Utils。
现在的问题是,当一个人想要git clone --recursive Proj时,他需要下载Utils两次。当项目越来越深入时,情况可能会更糟。
那我怎样才能让Proj重用Utils已经被Lib下载的Utils呢?
我的工作树:
Proj # Main project
+-- .git
`-- external
+-- Lib # Proj depends on Lib
| +-- .git
| `-- external
| `-- Utils # Lib depends on Utils
| `-- .git
`-- Utils # Proj also depends on Utils
`-- .git
注意:
Utils最好留在external/Utils。由于 Windows 兼容性,不允许使用符号链接。
如果有人能帮助我解决如此复杂的问题,我将不胜感激。
【问题讨论】:
-
也许使用某种依赖管理工具会更好。我们不知道您使用的是哪种技术,但 Maven 或 npm 之类的工具就是为这样的事情而设计的。我认为为此使用 Git 子模块并没有什么巨大的好处——它们只会碍事。
-
我将 CMake 用于 C++ 项目。
Utils是一些常见的头文件。迁移到 Maven 会不会很痛苦? @nwinkler -
Maven 主要用于 Java 项目,它对 C++ 项目没有帮助。以下是一些类似讨论的链接:stackoverflow.com/questions/1827705/… 和 reddit.com/r/cpp/comments/2eiulw/…
-
感谢您的回答。我将首先尝试 CMake 的 ExternalProject 模块。 @nwinkler
-
也许可以使用
insteadOf机制来完成(将子模块重定向到本地存储库)?也许我会尝试做一个演示。
标签: git repository git-submodules