对gerrit有所了解的同学,都知道gerrit 是我们常用的一个来做代码审核的工具,其中的权限管理,是一个非常重要的环节,关于每个权限的使用范围,可以参考博客https://blog.csdn.net/chenjh213/article/details/50571190,算是很详细的介绍,关于其中的小组,我们有这样的场景:代码仓是一个很重要的代码仓,只给指定的人员使用,其他人是不能下载查看的。这时候就涉及到了小组成员和默认权限的关系,gerrit的思想是:当默认权限和小组权限发生冲突时,以小组权限为主,也就是说,小组权限会覆盖掉默认权限。
我们现在有两个组:group1包含了全公司的开发人员,比如user1、user2、user3、user4,group2包含了负责feature_repo的开发人员,比如user1、user2,当然group2的user1、user2就是group1里的user1、user2。
需要设置feature_repo项目只给group2小组成员下载,group1里的user3、user4是不能下载的
步骤如下:
1.在people里设置小组如下:
在group1中添加全公司人员,如user1、user2、user3、user4,group2添加feature_repo的开发人员,如user1、user2,
2.然后创建两个空的仓库,分别叫group1,group2。其中仓库group1试用默认权限,如下:
仓库group2,设置权限如下:
push:设置禁止非小组人员push代码
Read:设置非小组人员克隆代码
3.设置feature_repo仓库的权限时,使用group2,如下:
4最后非group2的人员下载feature_repo时,就下载不到代码
成员user3,user4不在group2中,feature_repo又只允许group2的成员下载,那么user3或者user4这类非group2的人员下载feature_repo时,就下载不到代码,效果如下:
显示‘unable to checkout ’ 下载不到代码(虽然会在本地创建一个文件下)
注意,如果仓库代码多的话,执行克隆代码,前面一段时间看上去的是在显示下载,其实只是下.git 文件夹,没有实际下载代码,所以依然下载不到代码,这样非小组成员还是看不到代码,就是不给他看~~