使用 Gerrit 很容易意外地将开发分支中的不稳定代码合并到稳定分支中:
$ git checkout develop
$ commit
$ git push origin HEAD:refs/for/stable
在 Gerrit 中,提议的更改是否来自开发分支并被合并到稳定分支中并不是很清楚。有没有办法在 git 或 Gerrit 中防止这种合并发生?
更新: 现在我们使用自定义命令推送到 gerrit,它会找到它所基于的 origin 中的最后一个分支,并且只允许推送到该分支。
一种方法可能是这样的:
隔离用户
在 'git' 中只允许推送访问 'Integrator group' 的成员(如上所述)。
免责声明:我没有 Gerrit/Git 管理员角色/配置经验,所以老实说,我不知道“git”如何获取有关任何用户所属组的信息(恕我直言,这仍然可以手动实现)。
您应该在 Gerrit 中为该存储库的“开发”分支设置特定的访问控制。
像这样设置:
Reference: refs/for/refs/heads/develop
Push: Allow: <group>
但不是这样:
Reference: refs/for/refs/heads/*
Push: Allow: <group>
这样,您<group>只能推动审查“refs/for/develop”,而不是“refs/for/stable”或任何其他分支。