如何更新依赖于 gerrit 审查下的子模块提交的 git 超级项目?

xnl*_*sad 5 git git-submodules gerrit

我们有一个 git 超级项目,它有一个子模块。该子模块正在接受 gerrit 审查。

我们的问题是,当在子模块中审查更改时(即使正在审查的提交的子模块链接已在超级项目上提交),其他开发人员无法通过“git submodule update”检索它们,除非他们专门获取 refs/子模块中的更改/*。

我明确指出,我们需要其他开发人员能够签出子模块中仍在审查中的代码。所以等待代码合并并不是一个可行的选择。

有没有一种方法可以让开发人员通过超级项目上的“git submodule update”获得子模块中正在审查的更改,该超级项目的子模块链接指向正在审查的提交?

Von*_*onC 0

其他开发人员无法通过“git submodule update”检索它们,除非它们专门refs/changes/*在子模块中获取。

然而,这似乎是审查这些提交的常用方法。
例如,EGit 手册部分“从 Gerrit Code Review Server 获取更改”正是这样做的:

Egit Gerrit 获取

这个wiki 页面详细介绍了这个过程:

合并来自 gerrit 的补丁(请参阅 gerrit 中的下载部分),它应该是这样的:

git fetch ssh://username@gerrit.tuleap.net:29418/tuleap refs/changes/52/52/8
git merge --no-ff --no-commit --log FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)

由于开发人员想要更新子模块(应该引用特定提交),他/她可以:

  • 从该子模块中创建一个dev分支,可以在其中合并 Gerrit 更改
  • 不时更新同一子模块,并将新子模块 HEAD 与dev分支进行比较,可能会将dev分支重置为所述新更新的 HEAD。