在我的项目中,我需要使用存储在多个 Git 存储库中的第三方代码。我的项目也存储在(单独的)Git 存储库中。有几个人和我一起在主要项目上工作,我是维护者。
在早期的项目中,我曾经手动将依赖项复制到 Git 工作树,添加一个小文件来指定我使用的版本。
现在这相当不舒服,因为我需要每天更新一个依赖项,并且经常自己为其贡献代码,大部分时间伴随着对主项目的更改。
我决定尝试使用 Git 子模块来进行管理。我越尝试它们,我就越沮丧。甚至似乎手动复制可能更好。
以下是我的一些担忧:
- 我们不再能够通过单个命令(
git checkout
现在需要git submodule update --init
)获得一致的存储库状态。 - 我们无法正确使用某些 Git 工具(
git archive
最值得注意的是)。 - 我们无法看到主项目中子模块的状态更改/差异。
- 正如我刚刚以一种艰难的方式发现的那样,
git submodule
它不适用于--git-dir
and--work-tree
选项,并且需要将当前目录物理更改为“工作树的顶层”。
似乎为了简化我们的子模块工作流程(即一个操作 == 一个命令),我们必须围绕 Git 编写一个相当厚的包装器。这真是难过;这真是伤心。
请注意,离开 Git 或将子项目开发完全合并到主项目中不是一种选择。
也许我git submodules
以错误的方式使用?有没有关于工作流程的好教程?
即使您不知道正确的答案,也请说出来,但请分享我的担忧。:-)