Gerrit使用说明手册

Gerrit使用说明手册

1. 用户组

新用户由系统组配置帐号后,登录192.168.0.80输入管理员给你创建的帐号,然后注册,注册相关信息,包括邮箱,全名,ssh-key
配置界面如下:
1.1 配置完整界面

Gerrit使用说明手册_第1张图片

1.2 注册实时推送邮箱,新任务会通过邮箱通知,提交到gerrit的changes中的用户名和邮箱地址必须与gerrit用户信息一致,否则会被拒绝,除非有Forge XXX权限。

Gerrit使用说明手册_第2张图片

1.3 添加个人ssh-key,推送权限

Gerrit使用说明手册_第3张图片

1.4个人界面

Gerrit使用说明手册_第4张图片

2.仓库权限管控

2.1 创建用户组界面,系统管理员通过创建不同的分组,来区分不同的权限
Gerrit使用说明手册_第5张图片

2.2 所有项目界面,其中all-project和all-user特殊项目,通过继承权限仓库,赋予不同仓库不同的控制权限;
Gerrit使用说明手册_第6张图片

2.3 all-project仓库是所有仓库的配置仓库,所有的新建项目属性都是继承与该仓库。
Gerrit使用说明手册_第7张图片

2.4 all-project项目的权限设置界面,包括不同分支push权限,分组信息,等等。
Gerrit使用说明手册_第8张图片

2.5 all-user继承与all-project,更细分的用户权限管理仓库

2.6 个人私有项目的仓库配置,里面包括分支创建管理,权限管理,
可以看到其中的配置也是继承与all-project,Gerrit新建项目的权限继承自内置项目All-Projects。默认的权限已经十分完善,但仍然需要做一些微调来满足实际的需要。但是最好不要动All-Projects的默认权限,只修改本项目的权限,可以覆盖掉不想要的继承来的权限和添加新的权限。

3.分组和权限说明

(提交需要经过review+2(审核+2) submit(提交)才合入代码仓库)

3.1管理员(SCM) 添加代码仓库,分配注册用户,分配个人权限

3.2审核者(Reviewer) 拥有review +2 和abandon拒绝的权限,并使得代码submit合入仓库权限

3.3普通用户(User) 拥有提交权限,review+1 权限

e.g
权限配置可以参考该文章:http://openwares.net/linux/gerrit_privilege_setup.html

4.下载和上传代码

4.1 下载地址的改变
下载地址由原来的直接通过仓库名和git身份下载变成了ssh+个人名称+gerrit代码库名下载
原先下载地址:

[email protected]:mtk6572_jb_tg.git

加入gerrit后的下载地址:

ssh://[email protected]:29418/mtk6572_jb_tg

(下载的时候需要连同hooks钩子脚本,该下载地址可在gerrit直接查看复制)

可以看到我们的代码下载地址由原来的git@仓库变成了个人名称@gerrit的地址,也就是下载人的属性由原来的git用户身份变成了个人身份
同理push的远程地址变成了gerrit,也就是个人的修改需要通过gerrit上审核通过然后才合入代码仓库,保证代码仓库的安全性

4.2 push的方式改变
原先的直接push到仓库,会被直接拒绝,原因是gerrit不允许直接将本地修改同步到远程仓库。客户机必须先push到远程仓库的refs/for/*分支上,等待审核。这也是为什么我们需要使用gerrit的原因。gerrit本身就是个代码审核工具。

git push 远程仓库别名(默认origin) 本地分支:refs/for/远程分支

Tip:配置config属性可以达到和以前一样的push方法
git config remote.origin.push refs/heads/:refs/for/

5.代码审核

5.1 然后可以在gerrit的open栏看到你的提交,之后add审核者,审核者审核过后决定提交是否合入(merged)代码仓库,或者是打回(abandoned)重新提交,右上角可以通过关键字查找

5.2 代码因为merge冲突或者是不符合审核规则而被打回,在gerrit的abandon页面显示,此时远程仓库拒绝代码合入,也就是远程仓库没有你的提交
而提交者本地代码已经是属于commit状态需要自己撤销掉,根据被打回原因重新提交

e.g
merge冲突被打回,可能需要git pull 同步下代码再做提交
代码不符合规则,就需要根据公司要求重新修改再做提交

e.g
本地撤销的方法,撤销最近一条提交 git reset –mixed(–hard –soft) HEAD^

5.3 原先仓库下载方式,还拥有直接push提交到仓库的权限,所以gitosis需要修改权限,部分人(超级管理员SCM)才能有rw权限直接push代码到仓库,用于一些特殊情况的直接推送,比如仓库初始化,git push -f 强制修改等等
普通用户拥有ro权限,限制直接推送到服务器

6. 封装代码上传脚本

http://git.oschina.net/crisy/git-gerrit

你可能感兴趣的:(gerrit,代码审核,代码管控,使用说明)