9

我想要实现的是:同事在@coworkers 组中,客户在@clients 组中。

Git 存储库应可供所有人读写,但应有特殊的分支。即我创建了一个新的分支“实习生”,@coworkers 应该有 RW+ 访问权限,但客户不应该能够 R 或 W。

我以为我可以通过

repo myrepo
    -    intern    = @clients
    RW+            = @clients @coworkers

但这不起作用。

4

3 回答 3

10

根据与 gitolite 的作者的讨论,分支无法进行读取访问限制:

Gitolite 的每个分支的东西只适用于写访问。它不适用于读取访问,因为 git 本身不支持进行这种区分。

于 2011-02-17T11:10:16.143 回答
4

现在可以使用 gitolite 的部分复制功能使用最新版本的gitolite v3.x 限制对 gitolite 分支的读取访问

  1. 请务必使用最新的 gitolite 版本
  2. 取消注释~/.gitolite.rc 文件部分中的partial-copyENABLE
  3. $GIT_CONFIG_KEYS = '.*'在 ~/.gitolite.rc 文件中设置
  4. 使用部分复制选项拥有另一个存储库,它是原始存储库的副本,但没有一些分支。

示例:如果您希望客户端只能访问deploy分支

repo    my-repo
    RW+     =   @coworkers

repo    my-repo-deploy
    RW  deploy  =   @clients
    -           =   @clients

    -   VREF/partial-copy           =   @all
    config gitolite.partialCopyOf   =   my-repo

如果 git 抱怨它不能删除 master 分支,你可以在服务器上使用这个命令:

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

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

git clone -b deploy git@your-server:my-repo-deploy
于 2014-06-24T14:20:31.350 回答
0

我不是 gitolite 专家,但我认为规则是按顺序处理的。您是否尝试过简单地反转最后两行?即先授予@clients 和@coworkers 权限,然后再拒绝@clients 访问intern。

于 2011-01-12T14:54:58.347 回答