Gerrit - 如何禁止直接推送到"掌握"但允许其他分支机构

Tom*_*arz 16 git gerrit

我想设置下面描述的配置:

  • 注册用户无法直接将其更改推送到主人.他必须推动这些变化进行审核:

    git push origin master - 它应该被Gerrit拒绝(origin = Gerrit)

    git push origin HEAD:refs/for/master - Gerrit应该允许它

  • 注册用户可以创建新分支.该分支将被视为两个或更多开发人员之间的备份和合作方式,因此不应对其进行审查.

    git push origin xyz_abc - Gerrit应该允许它

我该如何配置Gerrit来实现这样的功能?

Seb*_*rot 8

在任何地方都没有好的指示,所以我想记录下这里的步骤.

1.导航到项目的"访问"页面

项目>列表> your_project>访问

2.编辑访问权限

单击"编辑"按钮

3.添加对refs/heads/*的引用

这是所有直接推送的参考.我们将配置谁可以对此路径做什么.

点击"添加参考"并输入'refs/heads/*'(无引号)

4.拒绝"推送"权限

推送权限是控制谁可以直接推送的权限.仍然允许合并推送和推送到Gerrit(参见下面的注释).

  1. 单击"添加权限",然后选择"推送".
  2. 选择要拒绝推送的用户组(如果要阻止所有人,可以键入"注册用户")
  3. 添加用户组后,从下拉列表中选择"DENY"

5.保存更改

而且你已经完成了.完成的配置应如下所示:

完成配置


注意

如果这不起作用,请确保在refs/for/refs/*上将Push权限设置为ALLOW - 这是允许推送到Gerrit的权限.

  • 我想知道这如何解决“但允许其他分支”。这将防止推送到所有分支。 (3认同)

mru*_*jay 0

AFAIK 您可以为 gerrit 中的每个存储库/项目设置权限。例如,谁可以推送/谁可以强制推送/谁可以批准您的更改等等。检查以下链接是否有用:

https://git.eclipse.org/r/Documentation/access-control.html

  • 仅链接到文档对于回答此类具体问题并没有多大帮助 (2认同)