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

时间:2013-09-04 21:10:52

标签: git gerrit git-submodules

我们有一个有一个子模块的git超级项目。子模块正在审核中。

我们的问题是,虽然在子模块中正在审查更改,(即使已经在超级项目上提交了正在审核的提交的子模块链接),其他开发人员也无法通过'git submodule update'检索更改,除非他们具体在子模块中获取refs / changes / *。

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

是否有办法让开发人员通过超级项目上的'git submodule update'来获取子模块中正在审核的更改,该超级项目的子模块链接指向正在审核的提交?

2 个答案:

答案 0 :(得分:0)

  

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

然而,这似乎是审查这些承诺的通常方式 例如,EGit munual部分“Fetching a change from a Gerrit Code Review Server”就是这样做的:

EGit Gerrit fetch

wiki page详细说明了该过程:

  

将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

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

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

答案 1 :(得分:0)

我认为这可以通过默认显式提取更改引用来解决:

fetch = +refs/changes/*:refs/remotes/origin/changes/*

或类似的。我不确定是否

git pull --recurse-submodules=yes

会正确地选择它。