Gitolite权限配置

基本含义:

C    代表创建,仅在通配符版本库授权是使用,用于指定谁可以创建与通配符匹配的版本库
R    RW    RW+    R为只读,RW为读写权限,RW+代表除了拥有读写权限,还可以强制执行推送
RWC    RW+C    
RWD    RW+D    D代表允许删除和正则匹配的引用
RWCD  RW+CD

传统模式的引用授权
传统模式的引用授权指的是在授权指令中只采用R、RW和RW+的传统授权关键字,而不包括后面介绍的扩展授权指令。传统的授权指令没有把分支的创建和分支删除权限细分,而是和写操作及强制推送操作混杂在一起。

1  @administrators = jiangxin admin
2  @dev                  = dev1 dev2 badboy
3  @test                  = test1 test2
4
5  repo    test/repo1
6          RW+           = @administrators
7          RW master refs/heads/feature/ = @dev
8          R                 = @test

关于授权的说明:
- 第6行,对于版本库test/repo1,管理员组用户jiangxin和admin可以读写任意分支、强制推送,以及创建和删除引用。
- 第7行,用户组@dev除了对master和refs/heads/feature/开头的引用具有读写权限外,实际上可以读取所有引用。这是因为读取操作授权阶段无法获知引用。
- 第8行,用户组@test对版本库拥有只读授权。

扩展模式的引用授权
扩展模式的引用授权,指的是该版本库的授权指令出现了下列授权关键字中的一个或多个:RWC、RWD、RWCD、RW+C、RW+D、RW+CD,将分支的创建权限和删除权限从读写权限中分离出来,从而可对分支进行更为精细的权限控制。
- 非快进式推送必须拥有上述关键字中的+方可授权。
- 创建引用必须拥有上述关键字中的C方可授权。
- 删除引用必须拥有上述关键字中的D方可授权。
即引用的创建和删除使用了单独的授权关键字,和写权限和强制推送权限分开。

1   repo    test/repo2
2           RW+C = @administrators
3           RW+   = @dev
4           RW      = @test
5
6   repo    test/repo3
7           RW+CD  = @administrators
8           RW+C    = @dev
9           RW         = @test
通过上面的配置文件,对于版本

库test/repo2.git具有如下的授权:
第2行,用户组@administrators中的用户,具有创建和删除引用的权限,并且能强制推送。
其中创建引用来自授权关键字中的C,删除引用来自授权关键中的+,因为该版本库授权指令中没有出现D,因而删除应用授权沿用传统授权关键字。
第3行,用户组@dev中的用户,不能创建引用,但可以删除引用,并且可以强制推送。
因为第2行授权关键字中字符C的出现,使得创建引用采用扩展授权关键字,因而用户组@dev不具有创建引用的权限。
第4行,用户组@test中的用户,拥有读写权限,但是不能创建引用,不能删除引用,也不能强制推送。
通过上面的配置文件,对于版本库test/repo3.git具有如下的授权:
第7行,用户组@administrators中的用户,具有创建和删除引用的权限,并且能强制推送。
其中创建引用来自授权关键字中的C,删除引用来自授权关键中的D。 -
第8行,用户组@dev中的用户,可以创建引用,并能够强制推送,但不能删除引用。
因为第7行授权关键字中字符C和D的出现,使得创建和删除引用都采用扩展授权关键字,因而用户组@dev不具有删除引用的权限。
第9行,用户组@test中的用户,可以推送到任何引用,但是不能创建引用,不能删除引用,也不能强制推送。
对路径的写授权

在授权文件中,如果一个版本库的授权指令中的正则引用字段出现了以NAME/开头的引用,则表明该授权指令是针对路径进行的写授权,并且该版本库要进行基于路径的写授权判断。

1  repo foo
2      RW                           =   @junior_devs @senior_devs
3
4      RW  NAME/             =   @senior_devs
5      -   NAME/Makefile  =   @junior_devs
6      RW  NAME/            =   @junior_devs

关于授权的说明:
- 第2行,初级程序员@junior_devs和高级程序员@senior_devs可以对版本库foo进行读写操作。
- 第4行,设定高级程序员@senior_devs对所有文件(NAME/)进行写操作。
- 第5行和第6行,设定初级程序员@junior_devs对除了根目录的Makefile文件外的其他文件具有写权限。

你可能感兴趣的:(Git,Git)