分支上的Gitolite权限

时间:2012-10-19 19:00:16

标签: git permissions gitolite

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

    this is gitolite@ubuntuserver running gitolite3 v3.1-2-g3eefc06 on git 1.7.9.5         

所有这些都说我想要完成的是(我认为)相对简单。我有一组初级开发人员[@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"

我注意到在我添加之前没有任何行动可以否认:

    option deny-rules = 1

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

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

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

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

如果有人能帮我解释一下,我会非常感激。

更新**

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

    -       master$         =   matthew
    RW+                     =   matthew

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

git pull origin newBranch
git push origin newBranch

每个都返回错误

PULL:

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)

PUSH:

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)

似乎所有我的分支都与裁判主人匹配$是因为他们都是从主人那里产生的?

2 个答案:

答案 0 :(得分:13)

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

@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

  1. 守门人可以完全访问。
  2. 开发人员可以阅读硕士和开发分支机构,然后他们否认 那里的其他行动。
  3. 开发人员可以做其他所有事情。
  4. 部署人员可以阅读所有内容。

答案 1 :(得分:0)

嗯,我查看了文档。并在这里试了一下。

@anything 适用于一组用户或其他群组。你在那里尝试的是不正确的。 您不能将“@”运算符用作变量符号。 Groups

的文档
repo    dawebsite
    RW+                 =   @vets
    -   branch1         =   @scrubs
    RW+                 =   @scrubs
    R   branch1         =   @scrubs
    R                   =   daemon
    option deny-rules = 1

Gitolite permissions