是否有可能强制更新git子模块?

Mik*_*ing 6 git git-submodules

我们有一个git存储库,它依赖于其他git存储库中的代码.我们使用子模块(通常的方式)来表达这种关系,并确保支持代码位于用户目录结构中的标准位置.更新支持代码非常简单:

  • 对子模块进行更改
  • 提交它
  • 推它
  • cd进入主存储库
  • 将更改提交给子模块
  • 推它

问题来自另一方面.在进行这种更改之后,为了让其他开发人员获得完整,一致的代码集,他们需要执行三个命令:

  • git pull(更新主存储库)
  • git submodule init(如果添加了任何新的子模块)
  • git子模块更新(更新子模块)

事实证明,培训开发人员很难完成所有这些工作,特别是因为在我们所有其他不包含子模块的存储库中,拉动就足够了.结果是开发人员有时使用使用过时版本的子模块的代码,导致虚假问题,这可能是耗时的追踪.除了编写一个执行所有三个命令并坚持使用"使用此命令"的shell脚本之外,还有什么方法可以让它更自动化?

Von*_*onC 3

您可以尝试要求您的同事:

git config --global fetch.recurseSubmodules on-demand
Run Code Online (Sandbox Code Playgroud)

git config 手册页

fetch.recurse子模块

该选项可以设置为布尔值或按需设置。

  • 将其设置为布尔值会更改 fetch 和 pull 的行为,以在设置为 true 时无条件递归到子模块,或者在设置为 false 时根本不递归。
  • 当设置为按需(默认值)时,当其超级项目检索更新子模块引用的提交时,获取和拉取只会递归到填充的子模块中。

另一种选择是要求他们执行一个更复杂的命令:

git pull --recurse-submodules=on-demand
Run Code Online (Sandbox Code Playgroud)

上面提到的设置git config的优点是可以让开发人员做简单的git pull.