如何改进 gerrit 验证为 -1 的提交?

How to improve the commit that gerrit verified as -1?

如果提交在 gerrit 中标记为 verified = -1,开发人员如何更改该提交并重新发送 git 审核? 据我所知,最高提交可以通过 git commit --ammend 进行更改,但是如何改进之前的其他提交(不在顶部)。

我对 gerrit 的体验在 2.7.0 版本左右停止(~1.5 年前),但我想主要原则保持不变。适合 Gerrit 审查的提交用 Change-Id: Ixxxx 行标记,其中 xxxx 是 20-digit 十六进制值(SHA-1 输出)。此标识符用于匹配同一提案的更新版本,因此,如果您推送具有相同 ID 的提交,它将由 gerrit 显示为同一更改的更新 "patch set",尽管它 git ID 已更改。

如果您有未合并的提交序列,并且必须更改非最终提交序列,请使用 git 交互式变基 (git rebase --interactive) 更新此序列内的提交。您可以选择一种方法来更新这些提交 - 例如手动编辑,或使用 fix 和使用 fixup 命令创建另一个提交...这不是主要的。作为此更改的结果,您将拥有更新的序列。例如,3-commit 系列的初始版本为:

git id = 1234, gerrit id = Iabcd;
git id = 5678, gerrit id = Ief01;
git id = 9abc, gerrit id = I2345.

编辑第一个提交后,您将拥有:

git id = 9876, gerrit id = Iabcd;
git id = 5432, gerrit id = Ief01;
git id = 10fe, gerrit id = I2345.

如你所见,git ID 会改变,但 gerrit id 不会。然后,推送整个序列(通过最终提交 ID 或简单地 HEAD),gerrit 站点将显示相同提交的新补丁集(通过 gerrit id 和分支的组合匹配它们)。

您还可以添加新提交(它们在基本仪表板视图中会乱序显示)、放弃一些(例如与其他提交合并)...您还可以重新生成 gerrit-id(默认提交挂钩执行此操作)如果 id 行被手动删除),则删除与旧提交历史记录的连接。

如果激活了验证挂钩,则将重新检查整套新补丁集;它还需要人工审核。使用默认的审查策略,所有标记 -1、0、+1、+2 都不会自动传递给同一提交的新补丁集,但 -2 会传递,因此相应的审查者必须更改它,即使他没有'说出新的看法。

在我的实践中,如果需要进行适当的工作(如深度重构),我过去常常形成此类提交的长序列,而且,是的,在某些情况下,需要更改序列开头的提交。这种情况真正乏味的特点是任何审阅者都必须重新批准以后的提交,即使它们没有更改,并且同一提交的补丁集之间的 gerrit 差异会暴露提交序列中较早发生的所有更改。我希望这会在未来的一些 gerrit 版本中得到帮助。