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授权指令,所以不涉及分支的写授权。