我们有一个 git 存储库,它依赖于其他 git 存储库中的代码。我们通常使用子模块来表达这种关系,并确保支持代码位于用户目录结构中的标准位置。更新支持代码很简单:
- 对子模块进行更改
- 提交它
- 推它
- cd 进入主存储库
- 提交对子模块的更改
- 推它
问题出现在另一边。在这种改变之后,为了让其他开发人员获得完整、一致的代码集,他们需要执行三个命令:
- git pull(更新主存储库)
- git submodule init(如果添加了任何新的子模块)
- git submodule update(更新子模块)
事实证明,培训开发人员完成所有这些工作很困难,特别是因为在我们所有其他不包含子模块的存储库中,拉取就足够了。结果是开发人员有时会使用使用过时版本的子模块的代码,从而导致虚假问题,这些问题可能很耗时。除了编写一个执行所有三个命令并坚持“使用这个!”的shell脚本之外,还有什么方法可以使这更自动化?