5

使用 Gerrit 很容易意外地将开发分支中的不稳定代码合并到稳定分支中:

$ git checkout develop
$ commit
$ git push origin HEAD:refs/for/stable

在 Gerrit 中,提议的更改是否来自开发分支并被合并到稳定分支中并不是很清楚。有没有办法在 git 或 Gerrit 中防止这种合并发生?

更新: 现在我们使用自定义命令推送到 gerrit,它会找到它所基于的 origin 中的最后一个分支,并且只允许推送到该分支。

4

3 回答 3

1

目前,软件中没有任何选项可以防止您犯这种错误。

但是,您可以做一些事情:

  • 培训人员,因此他们在进行审核时始终检查分支名称
  • 设置“推送到正确分支”类别(此处如何操作),选项包括 +1“正确分支”、0“无分数”、-1“不正确分支”等选项,因此审阅者必须正式确认他检查了分支名称
  • 设置一个持续集成工具来自动审查和评分上述类别(詹金斯有一个插件你可以使用)

你能分享一下你用来推送到 gerrit 的自定义命令吗?

于 2012-11-22T00:18:48.893 回答
0

一种方法可能是这样的:

隔离用户

  • 提交者组 - 您希望只承诺“开发”而不是“主要”的所有开发人员
  • Integrator group - 可以推送和合并到“主”的特权开发人员,如果需要,可以创建更多分支。

在 'git' 中只允许推送访问 'Integrator group' 的成员(如上所述)。

免责声明:我没有 Gerrit/Git 管理员角色/配置经验,所以老实说,我不知道“git”如何获取有关任何用户所属组的信息(恕我直言,这仍然可以手动实现)。

于 2013-05-20T15:44:32.497 回答
0

您应该在 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”或任何其他分支。

于 2014-07-17T06:44:22.300 回答