如何在不损失+2票的情况下一次重新确定Gerrit审查的所有承诺



我有一个更改,有几个提交,例如:

  • 最后
  • 第二
  • 第一

我收到了+2的合并请求,但不幸的是master已经移动,其中一个提交显示为"合并冲突",所以我不能一次提交所有提交。

然而,当我尝试在本地重新设置基准时,重新设置基准是微不足道的。而且,如果我在web界面上使用Rebase,它成功地解决了冲突。

然而,在当地重新定基数的问题是,我会失去+2票,不得不再次惹恼评审员。

web界面确实保留了我的+2票,但我还没有找到一种方法来同时重新调整所有提交的基础:我能做的最好的事情是:

  • 在新主机上重新设置first的基础
  • Rebase on parent changesecond重定在第一个之上
  • 依此类推,直到最后提交

如果我试图直接在web UI上重新确定最后一次提交的基础,就像我在CLI中所做的那样,Gerrit警告我这将破坏关系链:

Rebase on top of the master branch (breaks relation chain)

我认为这意味着只有一个提交会在master上进行,而不是按照我的意愿重新设置base?

有没有办法在不失去我+2票的情况下一次重新调整基础?

在Gerrit 2.16.2上进行测试。

当您有一个带有多个补丁集(提交)的更改时,您不需要重新设置每次提交的基础,只需要重新设置最后一次提交的基础。实际上,您要提交(集成/合并)的只是最后一次提交,而不是整个链。每次修改补丁集时,都会创建一个新的提交来替换以前的提交。

如果你对这个概念感到困惑,最好阅读Gerrit文档中的Working with Gerrit:An example item。

回答您的问题:当您重新调整补丁集的基础时,Gerrit将根据项目的copyAllScoresOnTrivialRebase配置处理+1/+2票。如果为true,则在上传一个新的补丁集时,标签的所有分数都会被向前复制,这是一个微不足道的重新基准。如果重新基准是手动生成的,并且是使用Web UI推送或生成的,那么它的工作方式没有什么不同。如果您得到了不同的行为,请确保您没有更改提交消息。

如果提交消息与上一个修补程序集中的相同,并且如果它具有相同的代码delta作为上一个补丁集。

尝试

  1. git签出主机
  2. gitpull->这将最新的代码从远程master拉到本地master分支
  3. git签出您的branch_name
  4. git rebase origin/master

解决合并冲突并更新您的审查请求。

我认为没有办法做到这一点。编辑提交(rebase就是编辑)意味着提交需要新的审查。

根据我的经验,在最后一次提交完成并进一步提交之前,你不应该推送新的提交进行审查。

最新更新