【问题标题】:Reuse Git submodule's submodule重用 Git 子模块的子模块
【发布时间】:2015-04-24 20:35:39
【问题描述】:

我有一个 Git 项目。让我们将其命名为Proj

Proj 有两个子模块,LibUtils

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

注意:

  1. Utils 最好留在external/Utils

  2. 由于 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


【解决方案1】:

正如前面在这个漂亮的programmers-stackexchange-post 中提到的,下载两次的唯一方法是创建指向 git-submodule 的第一个实例的符号链接。

【讨论】:

    猜你喜欢
    • 2010-12-04
    • 2015-03-22
    • 2014-09-30
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 2013-04-07
    相关资源
    最近更新 更多