gpt4 book ai didi

branch - Gitolite 限制对分支的访问

转载 作者:行者123 更新时间:2023-12-05 00:22:28 26 4
gpt4 key购买 nike

我的服务器上有 GITOLITE,我想配置对我的存储库的访问。我想限制某些用户访问某些分支。我尝试了很多如何配置 gitolite.conf 文件的变体,但我没有找到如何限制对某些分支的访问的解决方案。

1)

@developers1 = user1
@developers2 = user2

repo dbatest
RW+ = @developers1
R test = @developers2
- test = @developers2
RW+ = @developers2

当 user2 执行命令时: git push origin test : 推送成功
在 gitolite 日志中,我有以下几行:
http    ARGV=user2  SOC=git-receive-pack 'dbatest'  FROM=10.65.184.239
6453 pre_git dbatest user2 W any refs/.*
6453 system,git,http-backend
6453 END

2)
@developers1 = user1
@developers2 = user2

repo dbatest
RW+ = @developers1
- test = @developers2
RW+ = @developers2

当 user2 执行命令时: git push origin test : 推送成功
在 gitolite 日志中,我有以下几行:
http    ARGV=user2  SOC=git-receive-pack 'dbatest'  FROM=10.65.184.239
6457 pre_git dbatest user2 W any refs/.*
6457 system,git,http-backend
6457 END

3)
@developers1 = user1
@developers2 = user2

repo dbatest
RW+ = @developers1
R test = @developers2
- test = @developers2
RW+ = @developers2
option deny-rules = 1

当 user2 执行命令时: git push origin test :推送被拒绝,他看到了这条消息:
fatal: remote error: FATAL: W any dbatest user2 DENIED by refs/heads/test
(or you mis-spelled the reponame)

在 gitolite 日志中,我有这个:
8161    http    ARGV=user2  SOC=git-receive-pack 'dbatest'  FROM=10.65.184.239
8161 die W any dbatest user2 DENIED by refs/heads/test<<newline>>(or you mis-spelled the reponame)

看起来不错,但是当他尝试将某些内容推送到 master 分支时,他有此消息。

我尝试在我的 gitolite 配置文件中混合这些行,但它们对我不起作用。

如果有人可以帮助我,我会很高兴。我想限制某些开发人员对某些分支的写访问权限。我无法创建额外的存储库,我必须在一个主存储库上使用限制策略。

十分感谢!

最佳答案

如果我看 official documentation :

repo foo bar

RW+ = alice @teamleads
- master = dilbert @devteam
- refs/tags/v[0-9] = dilbert @devteam
RW+ dev/ = dilbert @devteam
RW = dilbert @devteam
R = @managers

dilbert and the dev team has these restrictions


they can do anything to branches whose names start with "dev/"
**they can create or fast-forward push, but not rewind or delete, any branch except `master`**

所以这看起来是对的:
- test  = @developers2
RW+ = @developers2

然而,gitolite 有两个检查:
  • 一个当 ref 未知时(在这种情况下 - test 被忽略),
  • 引用文献之一是已知的。

  • 在您的情况下,应该知道 ref(测试)并且拒绝规则适用。

    您可以通过跟踪特定规则的逻辑来进行更多调试:
    gitolite access -s dbatest user2 W test

    OP Sufelfay确认 in the comments那个 它适用于 3.5.3,不适用于 3.6.x .

    关于branch - Gitolite 限制对分支的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29839688/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com