Gitolite禁止在主分支上访问某个目录,但在用户分支上允许访问。

6

考虑以下存储库:

REPO/src/A/

REPO/src/B/

如果只有一个仓库,是否可以实现以下限制?

  1. 在主分支上,允许维护者角色完全访问。
  2. 在主分支上,禁止贡献者角色访问 A 但允许访问 B。
  3. 在个人分支上,允许创建者完全访问 A 和 B。

注意:在您的情况下,按名称排序的VREF可能是VREF/NAME/src/A而不是VREF/NAME/A - VonC
2个回答

4

使用 Gitolite V3 或 'g3' 和其VREF,应该可以实现这些限制。

但是你可以管理的访问权限仅限于写入访问权限。
如果用户可以克隆存储库,则他/她将具有对所有存储库的读取访问权限(如在“gitolite:仅允许更改选定文件”中所述)。
如果您真的想限制读取访问权限,则可以尝试 gitolite 'partial-copy'

几个注意点:

访问规则就像:

<permission> <zero or more refexes> = <one or more users/user groups>

"" 意味着您可以组合 refexes。
这将会得到类似以下内容(未经测试):
repo REPO
        RW+  master                     =   MAINTAINER
        -    master         VREF/NAME/A =   CONTRIBUTOR
        RW   master         VREF/NAME/B =   CONTRIBUTOR
        RW   personal/USER/ VREF/NAME/A =   CREATOR
        RW   personal/USER/ VREF/NAME/B =   CREATOR

嗨,我不在意读取权限。我会按照您建议的设置进行尝试,并反馈意见。 - Kostas Konstantinidis
1
@Konstantinos 很好。确保你的GitLab设置中安装了gitolite V3。并尝试在GitLab之外,通过ssh直接使用git命令。 - VonC
@VonC,但是组合的引用不是AND而是OR吗? - Michal Rus
@MichalRus 不完全是这样的:它遵循一种规则积累的原则:http://gitolite.com/gitolite/conf.html#rule-accumulation - VonC

0
repo REPO
    - master VREF/NAME/src/A = @contributors
    RW+ master = @maintainers @contributors
    RW+ personal/ = @creators

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接