如何在不损失+2票的情况下立即重新整理Gerrit审核的所有提交?

时间:2019-01-22 11:34:48

标签: git gerrit

我进行了几次提交更改,例如:

  • 最后
  • 第一

我已经收到+2的合并请求,但是不幸的是master已移动,并且其中一个提交显示为“合并冲突”,因此我无法一次提交所有提交。

但是,当我尝试在本地进行重新设置时,重新设置很简单。而且,如果我在Web界面上使用Rebase,它将成功解决冲突。

但是在本地重新部署的问题是,我将失去+2票,而不得不再次惹恼审稿人。

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

  • 在新的主服务器上重新建立first
  • 首先使用secondRebase on parent change重新设置为基础
  • 依此类推,直到最后一次提交

如果像在CLI中那样直接在Web UI上重新建立最后一个提交,Gerrit警告我这会破坏关系链:

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

我认为这意味着仅一次提交将在master之上,而不是按我的意愿重新设置基准?

有没有一种方法可以立即调整全部基准,而又不会失去我的+2票?

在Gerrit 2.16.2上进行了测试。

3 个答案:

答案 0 :(得分:2)

当您对多个补丁集(提交)进行一次更改时,无需为每个提交重新设置基准,您只需为最后一个提交重新设置基准。实际上,您将仅提交(集成/合并)最后一个提交而不是整个链。每次修改补丁集时,您都会创建一个新的提交来替换先前的提交。

如果您对此概念感到困惑,那么最好阅读Gerrit文档中的Working with Gerrit: An example项。

回答您的问题:重新设定补丁集基础时,Gerrit将根据项目的copyAllScoresOnTrivialRebase配置来处理+ 1 / + 2票。如果为true,则在上传新补丁集(不重要的基础)时会向前复制标签的所有分数。如果手动进行重新设置,使用Web UI推送或进行重新设置,则工作方式没有任何区别。如果您的行为有所不同,请确保您没有更改提交消息。

  

如果提交消息,则新补丁集被认为是不重要的基础   与先前的补丁集相同,并且具有相同的代码   增量作为先前的补丁集。

答案 1 :(得分:1)

尝试

  1. git checkout master
  2. git pull->这会将最新代码从远程master提取到本地master分支。
  3. git签出your_branch_name。
  4. git重置原始服务器/主机。

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

答案 2 :(得分:0)

我不认为有办法做到这一点。编辑提交(并且正在对基准进行编辑)意味着提交需要重新审核。

我的经验表明,在最后一个提交完成并进一步推送之前,您不应该推送新的提交以供审核。