30.4.4 对引用的授权:传统模式
传统的引用授权指的是授权指令中不包含RWC、RWD、RWCD、RW+C、RW+D、RW+CD授权关键字,只采用RW和RW+的传统授权关键字。
在只使用传统的授权关键字的情况下,有如下注意事项:
非快进式推送必须拥有+的授权。
创建引用必须拥有W的授权。
删除引用必须拥有+的授权。
如果没有在授权指令中提供引用相关的参数,相当于提供refs/.*作为引用的参数,意味着对所有引用均有效。
授权文件:
1 @administrators=jiangxin admin
2 @dev=dev1 dev2 badboy
3
4 repo test/repo1
5 RW+=@administrators
6 RW master refs/heads/feature/=@dev
7 R=@test
说明:
第5行,对于版本库test/repo1,管理员组用户jiangxin和admin可以任意创建和删除引用,并且可以强制推送。
第6行的规则看似是只对master和refs/heads/feature/*的引用授权,实际上@dev可以读取所有名字空间的引用。这是因为读取操作无法获得引用相关的内容。即用户组@dev的用户只能对master分支,以及以feature/开头的分支进行写操作,但不能强制推送和删除。至于其他分支和里程碑,则只能读不能写。
至于用户组@test的用户,因为使用了R授权指令,所以不涉及分支的写授权。