git / gerrit阻止开发分支合并到稳定/测试分支

时间:2011-09-19 15:35:41

标签: git merge branch gerrit

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

  • 培训人员,因此他们在执行审核时始终检查分支机构名称
  • 设置了“推送到正确的分支”类别(howto here),其中包含+1“正确分支”,0“无分数”,-1“不正确的分支”等选项,因此审稿人必须正式确认他检查了分行名称
  • 设置一个持续集成工具,自动审核并评分上述类别(Jenkinsplugin您可以使用)

你会分享你用来推动gerrit的自定义命令吗?

答案 1 :(得分:0)

一种方法可能是这样的:

隔离用户

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

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

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

答案 2 :(得分:0)

您应该在Gerrit中为您的"开发"设置特定的访问控制。那个回购的分支。

像这样设置:

Reference: refs/for/refs/heads/develop
Push: Allow: <group>

喜欢这样:

Reference: refs/for/refs/heads/*
Push: Allow: <group>

这样,您的<group>只能推送&#34; refs / for / develop&#34;而不是&#34; refs / for / stable&#34;或任何其他分支。