使用gitolite拒绝读取特定的存储库分支

时间:2011-01-12 12:38:44

标签: git acl gitolite

我想要实现的目标如下: 同事在@coworkers小组, 客户在@clients组中。

Git仓库应该可以为每个人读写,但是应该有特殊的分支。 即我创建了一个新的分支“实习生”,而@coworkers应该有RW + access,但客户端不应该是R或W.

我以为我可以通过

实现这一目标
repo myrepo
    -    intern    = @clients
    RW+            = @clients @coworkers

但这不起作用。

3 个答案:

答案 0 :(得分:9)

根据a discussion与gitolite的作者一起,分支机构无法进行读访问限制:

  

Gitolite的每分支内容仅适用于写访问。它   不适用于读访问,因为git本身没有   支持做出这种区分。

答案 1 :(得分:3)

现在可以使用最新版本的gitolite v3.x来限制对gitolite分支的读取访问权限使用gitolite的partial-copy feature

  1. 请务必使用最新的gitolite版本
  2. 取消注释〜/ .gitolite.rc文件的partial-copy部分中的ENABLE
  3. 在〜/ .gitolite.rc文件中设置$GIT_CONFIG_KEYS = '.*'
  4. 使用partial-copy选项可以拥有另一个存储库,该存储库是原始存储库的副本,但没有一些分支。
  5. 示例:如果您希望客户端只能访问deploy分支

    repo    my-repo
        RW+     =   @coworkers
    
    repo    my-repo-deploy
        RW  deploy  =   @clients
        -           =   @clients
    
        -   VREF/partial-copy           =   @all
        config gitolite.partialCopyOf   =   my-repo
    

    如果git抱怨它无法删除主分支,则可以在服务器上使用此命令:

    sudo git config --system receive.denyDeleteCurrent warn
    sudo git config --global receive.denyDeleteCurrent warn
    

    客户端现在可以使用如下命令克隆my-repo-deploy存储库的deploy分支:

    git clone -b deploy git@your-server:my-repo-deploy
    

答案 2 :(得分:0)

我不是一个gitolite专家,但我认为规则是按顺序处理的。你试过简单地倒转最后两行吗?也就是说,首先授予@clients和@coworkers权限,然后拒绝@clients访问实习生。