gerrit权限配置
常用权限配置:参考资料http://blog.sina.com.cn/s/blog_a04b8ed30102w8kf.html
1.Global Capabilities 管理员的权限一般不需要动
2.refs/* 这里对用户Projects List 进行管理,如果用户对一个项目没有该权限的读取功能,则用户不能查询到该项目,即使有该项目的URL也不能从远程拉取该项目
3. refs/for/*和refs/for/refs/*,用来控制向gerrit仓库push权限。如果需要限制用户push功能,可以将用户组添加至PUSH下选择BLOCK
4. 指定分支管理,如果不希望用户将代码提交到某一分支(master),可以新加一个reference权限,名叫refs/for/refs/heads/master,然后设置push权限添加对应用户组,设置权限为BLOCK
5. 提交新分支,要直接push,因为向gerrit上提交新分支会提示未找到分支。这里要设置的权限是refs/heads/*下面的create reference。添加组并赋予ALLOW即可
6.删除远程分支,设置权限refs/heads/*下面的push权限,并且勾选后面的Force Push。
7. refs/heads/*下的Label Code-Review是review代码时评分,有+2评分权限的用户可以让提交的代码通过审核。
例子1:对特定project 允许特定groups 查看和push代码
预置条件:
1、管理员admin创建项目work-mac-test,并创建用户组reviewer、developer(其他用户没有权限创建项目和组)
2、将注册用户reviewer1和admin加入审核组reviewer;将注册用户developer1和admin加入代码提交组developer
3.注册用户test不加入任何组
修改权限:
①修改work-mac-test项目组的权限,添加入下。
注意:Excluslve一定要打开,才能覆盖掉从All-Projects继承过来的权限,该组添加的特定权限才能生效
②developer组用户用git提交代码到gerrit
前提条件:将本地git生成的公钥添加到不同用户登录gerrit后的setting–>ssh keys,在本地就能使用不同账户拉取代码(用户必须在组内才有read权限)
需要注意的是:本地多个账户操作时,每次切换账号都要删除拉取下来的代码,否则会提示目录存在
拉取代码提示:Could not resolve hostname d6612fcb89aa: nodename nor servname provided, or not known
[admin@admindeMBP .ssh %] git clone "ssh://developer1@d6612fcb89aa:29418/work-mac-test" && scp -p -P 29418 developer1@d6612fcb89aa:hooks/commit-msg "work-mac-test/.git/hooks/"
Cloning into 'work-mac-test'...
ssh: Could not resolve hostname d6612fcb89aa: nodename nor servname provided, or not known
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解决办法一:手动将gerrit容器id修改为ip地址
[admin@admindeMBP work-mac-test %]git clone "ssh://reviewer1@172.16.207.138:29418/vm-test" && scp -p -P 29418 reviewer1@172.16.207.138:hooks/commit-msg "vm-test/.git/hooks/"
[admin@admindeMBP work-mac-test %] vi test8.sh
[admin@admindeMBP work-mac-test % ]git add test8.sh
[admin@admindeMBP work-mac-test %] git commit -m "add test8.sh"
[master d86b5e4] add test8.sh
1 file changed, 1 insertion(+)
create mode 100644 test8.sh
[admin@admindeMBP work-mac-test % ]git push origin HEAD:refs/for/master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 327 bytes | 327.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1)
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: http://d6612fcb89aa/c/work-mac-test/+/62 add test8.sh [NEW]
remote:
To ssh://192.168.229.135:29418/work-mac-test
* [new branch] HEAD -> refs/for/master
解决办法二:在本地添加映射关系
我用的是mac,windows方法一样,就是hosts文件的位置不一样
admin@admindeMBP .ssh % git clone "ssh://developer1@d6612fcb89aa:29418/work-mac-test" && scp -p -P 29418 developer1@d6612fcb89aa:hooks/commit-msg "work-mac-test/.git/hooks/"
Cloning into 'work-mac-test'...
remote: Counting objects: 2, done
remote: Finding sources: 100% (2/2)
remote: Total 2 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (2/2), done.
commit-msg 100% 2174 1.1MB/s 00:00
admin@admindeMBP .ssh %
3⃣️没有加入任何组的test用户,因为没有读权限,所以看不到添加的项目
就算通过其他方式获得拉取代码的地址,也会提示错误~~
admin@admindeMBP .ssh % git clone "ssh://test@d6612fcb89aa:29418/work-mac-test" && scp -p -P 29418 test@d6612fcb89aa:hooks/commit-msg "work-mac-test/.git/hooks/"
Cloning into 'work-mac-test'...
fatal: Project not found: work-mac-test
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
4⃣️Gerrit不允许用户直接push代码到分支上(特别授权用户除外),否则报错:
正确的做法是所有提交都push到 HEAD:refs/for/分支名 :
格式如:git push origin HEAD:refs/for/分支名
reviewer组中用户可以进行代码审查;developer组中用户只能读,无操作权限;不加入任何组的test用户看不到提交到gerrit待审查的代码:
代码审查分数达到2后,reviewer组用户不能submit,developer组用户不能submit;只有admin可以submit:
例子2:项目设置了隐藏,如何将项目重新显示出来?
使用管理员账号执行:
ssh -p 29418 admin@192.168.229.135(gerrit服务器ip) gerrit set-project work-mac-test(项目名称) --project-state ACTIVE
例子3:登陆gerrit后,clone项目没有ssh地址?
我要获取ssh地址,通过git拉取代码,结果没有ssh地址,经过各种尝试找到原因,原来我注册后首次登陆没有设置username,一直为空…
在设置–profile–添加上username后刷新页面,出来了ssh地址。
总结:username一定不能为空
更多推荐
所有评论(0)