分支上的Gitolite权限

mmo*_*les 11 git permissions gitolite

我真的很茫然.我已经阅读了很多例子,并尝试了所有这些例子.最基本的工作正常,但任何时候我尝试移动到更复杂的东西一切都崩溃了(即使我直接复制的例子).此外,为了记录我在服务器垃圾邮件显示的gitolite版本3:

    this is gitolite@ubuntuserver running gitolite3 v3.1-2-g3eefc06 on git 1.7.9.5         
Run Code Online (Sandbox Code Playgroud)

所有这些说我想要完成的是(我认为)相对简单.我有一组初级开发人员[@scrubs],我只希望他们创建并提交新的分支,并能够读取/拉取master.这样我可以在合并之前查看他们的代码.

我有一群高级开发人员[@vets]我希望自由统治.

我的配置文件如下:

     @scrubs         = al ted matthew
     @vets           = kevin will guy

     @offlimitbranches = master$

     repo    gitolite-admin
             RW+     =   @vets matthew

     repo    dawebsite
             RW+                     =   @vets
             -   @offlimitbranches   =   @scrubs
             RW+                     =   @scrubs
             R   @offlimitbranches   =   @scrubs
             R                       =   daemon
             option deny-rules = 1

     dawebsite "Owner"               = "This is THE site"
Run Code Online (Sandbox Code Playgroud)

我注意到,除非我补充说:

    option deny-rules = 1
Run Code Online (Sandbox Code Playgroud)

其中我认为我可能在20个例子中找到了一个(一点点咆哮原谅了挫折感.

通过这种当前的设置,兽医可以按预期做任何事情.

磨砂既不能拉动也不能推动掌握(我认为这是因为它抓住了它可能匹配的第一条规则?)磨砂也不能拉动或推动任何非主分支,也不能推动新创建的分支.每次尝试都返回相同的消息"致命:[R/W]任何dawebsite matthew DENIED由refs/heads/master $"

我尝试使用master,master $,@ offlimitbranches甚至refs/heads/master对分支引用无效.

如果有人能帮助我解决这个问题,我会非常感激.

更新**

玩弄我注意到的事情,如果我从磨砂组中移除马修并尝试直接操纵他

    -       master$         =   matthew
    RW+                     =   matthew
Run Code Online (Sandbox Code Playgroud)

如果他搬到一个新的分支并尝试以下方法:(感谢VonC在日志上的抬头)

git pull origin newBranch
git push origin newBranch
Run Code Online (Sandbox Code Playgroud)

每个都返回一个错误

拉:

ARGV=matthew    SOC=git-upload-pack 'dawebsite.git'     FROM=172.24.1.198
access(dawebsite, matthew, R, 'any'),-> R any dawebsite matthew DENIED by refs/heads/master$
trigger,Writable,access_1,ACCESS_1,dawebsite,matthew,R,any,R any dawebsite,matthew DENIED by refs/heads/master$
R any dawebsite matthew DENIED by refs/heads/master$<<newline>>(or you mis-spelled the reponame)
Run Code Online (Sandbox Code Playgroud)

推:

ARGV=matthew    SOC=git-receive-pack 'dawebsite.git'    FROM=172.24.1.198
access(dawebsite, matthew, W, 'any'),-> W any medehrdev matthew DENIED by refs/heads/master$
trigger,Writable,access_1,ACCESS_1,dawebsite,matthew,W,any,W any dawebsite matthew DENIED by refs/heads/master$
W any dawebsite matthew DENIED by refs/heads/master$<<newline>>(or you mis-spelled the reponame)
Run Code Online (Sandbox Code Playgroud)

似乎所有我的分支都与ref master相匹配$是因为它们都是由master产生的?

gaR*_*Rex 14

我的配置,现在正在运行:

@gatekeepers = ustimenko
@developers  = ustimenko user1 user2
@deployers   = puppet

@project     = repo1
@project     = cakephp

repo @project
    RW+                 = @gatekeepers  
    R   master develop  = @developers
    -   master develop  = @developers
    RW+                 = @developers
    R                   = @deployers
Run Code Online (Sandbox Code Playgroud)
  1. 守门人可以完全进入.
  2. 开发人员可以阅读主人并开发分支机构,然后他们拒绝其他行动.
  3. 开发人员可以做所有其他事情.
  4. 部署者可以阅读所有内容.

  • @brucenan,dev创建本地分支,提交许多提交.然后推动分支在中央裸仓,从devlead采取它.然后在审查dev rebase之后,通过在几个重要的提交中压缩它们并将分支推回去除许多小提交.然后devlead接受它并合并开发. (2认同)

Ren*_*hle 0

嗯,我已经查看了文档。并在这里尝试过。

@anything适用于一组用户或其他组。您在那里尝试的内容不正确。您不能使用“@”运算符作为变量符号。的文档

repo    dawebsite
    RW+                 =   @vets
    -   branch1         =   @scrubs
    RW+                 =   @scrubs
    R   branch1         =   @scrubs
    R                   =   daemon
    option deny-rules = 1
Run Code Online (Sandbox Code Playgroud)

Gitolite 权限