1

当父存储库中包含的任何子模块的源或源在上游发生更改时,存在哪些工具可以使更新 Git 存储库及其子模块元数据变得     容易(或至少更容易)?我已经看到建议使用 Git 挂钩或持续集成和部署系统以这种方式管理此类事情的建议,但似乎没有人想出并完全解释一个有效的综合解决方案。

4

1 回答 1

1

它首先取决于主父存储库如何引用其子模块。
如果它有跟踪分支的子模块,那么一个简单的命令就足以用新的子模块内容更新父 repo:

git submodule update --recursive --remote

然后,您需要做的就是定期执行(cron 作业、Jenkins 作业……),您的主存储库将始终是最新的。


CI/CD 是否可以看到与其关联的存储库所依赖的子模块已更改并在可能的情况下为您运行它?

一份工作可以:

  • 获取与子模块关联的 gitlink 的 SHA1

    git rev-parse released-1.2.3^{commit}:foo
    
  • 执行所有子模块的更新

    git submodule update --recursive --remote
    
  • 将子模块的 SHA1 与原来的比较:如果有任何变化,则子模块不再引用相同的 SHA1,并且发生了一些变化。

于 2018-04-03T04:30:20.583 回答