使用gitolite拒绝读取特定存储库分支
我正在努力实现以下目标: 同事在@coworkers组中, 客户在@clients组中 Git回购协议应可供所有人阅读和书写,但应有专门的分支机构。 i、 e.我创建了一个新的分支机构“实习生”,并且@同事应具有RW+权限,但客户不应能够R或W 我想我可以通过使用gitolite拒绝读取特定存储库分支,git,acl,gitolite,Git,Acl,Gitolite,我正在努力实现以下目标: 同事在@coworkers组中, 客户在@clients组中 Git回购协议应可供所有人阅读和书写,但应有专门的分支机构。 i、 e.我创建了一个新的分支机构“实习生”,并且@同事应具有RW+权限,但客户不应能够R或W 我想我可以通过 repo myrepo - intern = @clients RW+ = @clients @coworkers 但这不起作用。我不是gitolite专家,但我认为规则是按顺序处理的。
repo myrepo
- intern = @clients
RW+ = @clients @coworkers
但这不起作用。我不是gitolite专家,但我认为规则是按顺序处理的。你试过简单地倒转最后两行吗?也就是说,首先向@clients和@coworkers授予权限,然后再拒绝@clients访问intern。根据gitolite作者的一份报告,分支机构不可能有读访问限制: Gitolite的每分支内容仅适用于写访问。信息技术 不适用于读访问,因为git本身不适用 支持作出这种区分
现在可以使用gitolite的最新版本gitolite v3.x限制对gitolite分支的读取访问
ENABLE
部分副本行的注释$GIT\u CONFIG\u KEYS='.*'
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
在git中,按设计限制读取访问是不可能的——克隆时,您必须始终获取完整的存储库,这是无法避免的(如果不从根本上改变git的操作方式)。现在,通过gitolite最新版本的部分复制功能,这是可能的。检查下面我的答案。