【问题标题】:How to freeze a changeID on Gerrit?如何冻结 Gerrit 上的 changeID?
【发布时间】:2025-12-02 00:35:01
【问题描述】:

我的 Gerrit 服务器上有一个存储库,其中一个 changeID 必须在经过审核并准备好提交后测试几个小时。

在测试要提交的 changeID 时,我想冻结/挂钩 changeID,以便没有人推送新的补丁集或变基。

当测试步骤完成后,应该可以提交这个 changeID,但为此,在开始测试步骤后,相关的 changeID 最好不要有任何新的补丁集。


目前,当有人在我已经开始测试的 ChangeID 上创建新的补丁集时,我有两个选择:

1) 用新的补丁集重新开始测试,这耽误了我的工作。 2)忽略新的补丁集并专门从我已经开始测试的补丁集中执行cherry-pick,完成测试后,将其推送给refs/heads/master。

【问题讨论】:

  • 为什么其他人要更新您的补丁集?每个开发人员都应提交自己的更改。更新他人是否会改变您工作流程的正常部分?
  • 是的,这里我们经常成对工作(司机/导航员)切换位置。

标签: git hook gerrit


【解决方案1】:

您的 Gerrit 服务器的 Gerrit 管理员需要设置一个额外的自定义标签,该标签使用“PatchSetLock”功能。这看起来像是另一种代码审查选择,并且在设置后会阻止将新补丁添加到该更改 ID。

您的管理员还需要设置项目 ACLS,以便开发人员有权编辑标签。类似于可能已经为代码审查标签设置的内容。

详情在这里: https://gerrit-review.googlesource.com/Documentation/config-labels.html

【讨论】: