我想要实现的是:同事在@coworkers 组中,客户在@clients 组中。
Git 存储库应可供所有人读写,但应有特殊的分支。即我创建了一个新的分支“实习生”,@coworkers 应该有 RW+ 访问权限,但客户不应该能够 R 或 W。
我以为我可以通过
repo myrepo
- intern = @clients
RW+ = @clients @coworkers
但这不起作用。
根据与 gitolite 的作者的讨论,分支无法进行读取访问限制:
Gitolite 的每个分支的东西只适用于写访问。它不适用于读取访问,因为 git 本身不支持进行这种区分。
现在可以使用 gitolite 的部分复制功能使用最新版本的gitolite v3.x 限制对 gitolite 分支的读取访问
partial-copy
行ENABLE
$GIT_CONFIG_KEYS = '.*'
在 ~/.gitolite.rc 文件中设置示例:如果您希望客户端只能访问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
我不是 gitolite 专家,但我认为规则是按顺序处理的。您是否尝试过简单地反转最后两行?即先授予@clients 和@coworkers 权限,然后再拒绝@clients 访问intern。