18

我想设置如下所述的配置:

  • 注册用户不能将他的更改直接推送给master。他必须推动这些更改以供审查:

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

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

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

    git push origin xyz_abc- Gerrit 应该允许

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

4

5 回答 5

9

任何地方都没有好的说明,所以我想我会在这里记录这些步骤。

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

项目 > 列表 > your_project > 访问

2. 编辑权限

单击编辑按钮

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

这是所有直接推送的参考。我们将配置谁可以对该路径执行什么操作。

单击“添加参考”并输入“refs/heads/*”(无引号)

4.拒绝“推送”权限

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

  1. 单击“添加权限”并选择“推送”。
  2. 选择您要拒绝推送的用户组(如果您想阻止所有人,您可以输入“注册用户”)
  3. 添加用户组后,从出现的下拉列表中选择“拒绝”

5. 保存更改

你完成了。完成的配置应如下所示:

完成配置


笔记

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

于 2016-06-23T10:30:43.467 回答
1

您需要更改项目的访问设置,并且需要使用该Exclusive标志来覆盖refs/heads/master. 通过这样的配置,您应该能够实现“允许推送除master分支之外的任何地方”。

访问设置以在主分支中禁用推送但允许在其他分支中推送

来源:https ://gerrit-review.googlesource.com/Documentation/access-control.html#_project_access_control_lists

于 2021-01-27T09:28:07.290 回答
0

如果有很多分支,您可以为分支使用命名空间(例如 dev/*)并为这些命名空间设置访问控制。

于 2013-08-14T11:42:30.697 回答
0

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

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

于 2013-04-27T14:07:05.800 回答
0

在 mmelnik 的指导下回答这个线程

当引用重叠时,一次只有一个有效(更通用的一个)。

因此,您不应为 master 设置拒绝权限并允许所有其他分支,而是可以为您的开发分支使用前缀并使用以下参考来允许向它们推送:

^refs/heads/YourPrefix.*

注意:在正则表达式的开头和结尾保留^& 。*

于 2020-08-11T21:38:35.880 回答