一、准备工作
安装CentOS7操作系统,准备Gerrit软件安装包:gerrit-2.10.war。
安装sendmail:
[root@localhost ~]#yum install -y sendmail
安装apache:
[root@localhost ~]#yum install -y httpd创建一个用户用于安装Gerrit:
[root@localhost ~]#adduser gerrit
二、安装Gerrit
首先切换到gerrit用户:
[root@localhost ~]#su gerrit
[gerrit@localhost root]$cd [gerrit@localhost ~]$
安装Gerrit软件:
如果下载bcpkix-jdk15on-149.jar失败,可以手动下载http://www.bouncycastle.org/download/bcpkix-jdk15on-149.jar,再将bcpkix-jdk15on-149.jar放到/home/gerrit/review2/lib/bcpkix-jdk15on-149.jar。
设置gerrit开机启动:
[gerrit@localhost root]$sudo ln -s /home/gerrit/review2/bin/gerrit.sh /etc/init.d/gerrit.sh
[gerrit@localhost root]$sudo chkconfig --level 345 gerrit.sh on
三、配置Apache反向代理
在/etc/httpd/init.d中创建gerrit.conf文件,填入下列内容:
重启httpd服务:
[root@localhost ~]#service httpd restart
设置httpd开机启动:
[root@localhost ~]#chkconfig --level 345 httpd on
四、注册Gerrit用户
登录Gerrit服务器,执行:
这样就注册了一个用户user1。
在浏览器中输入:http://10.1.5.116/gerrit,回车(10.1.5.116是gerrit服务器的IP):
输入用户名和密码,点击“确定”:
点击"Register New Email"注册Email:
填入邮箱地址后,点击“Register”。如果网络没有问题则注册邮箱会收到下面的邮件:
如果Gerrit服务器没有连接网络,可以通过mailq命令查找邮件:
可以看出这封注册邮件被延迟了。根据Q-ID查找被延迟的消息:
将链接“http://10.1.5.116/gerrit/#/VE/a9ShrHrDxyxviNhDPGF/9YYu9l1NkC716+LOJQ==$MTAwMDAwMTp1c2VyMUB0ZXN0LmNvbQ==”输入浏览器:
邮箱注册成功!
第一个注册的用户自动具有管理员权限,以后注册的用户默认没有管理员权限,权限的修改可以由管理员完成。
下面说明一下将非第一个注册的用户user1设置为管理员的过程。首先需要用具有管理员权限的用户登录,点击“People-->List Groups”:
点击“Administrators”:
输入用户名:
输入首字母系统就会列出匹配的条目。选中后点击“Add”:
user1就称为管理员用户组中的一员了,具备了管理员权限。
user1的默认名称为“Anonymous Coward”,可以修改一下:
点击“Settings”:
点击“Contact Information”:
在“Full Name”中输入新名称:
点击“Save Changes”:
看右上角,名称已经变了!
下面需要填入客户端公钥。创建一个用户ttt,切换到ttt用户,执行ssh-keygen生成公钥:
将id_rsa.pub中的内容全部复制,然后在网页中点击右上角的全名:
点击“Settings-->SSH Public Keys”:
点击“How to Generate an SSH Key”可以查看如何生成Public Key:
将复制的公钥粘贴上去:
点击“Add”:
公钥添加完成!一个用户可以添加多个公钥。
五、创建代码库
点击“Projects->Create New Project”:
在"Project Name"中填入代码库名称,并选中“Create initial empty commit”:
点击“Create Project”:
在“Description”中填入描述信息,点击"Save Changes"。点击"Projects-->List":
可见新的代码库已经创建成功。
创建这个代码库的用户会默认关注这个库的变化。关注的意思是有代码提交等行为时关注这个库的用户会收到邮件通知。其它用户可以设置关注此库:
点击“Browse”可以查看已有的代码库:
双击选中的库:
这样new-repo这个库就被当前用户关注了。
我们可以为这个新建立的库配置权限,点击“Projects-->LIst-->new-repo-->Access”:
默认new-repo是继承All-Projects的权限。点击All-Projects可以编辑全局权限,通常全局权限编辑完成后新项目不需要再设置权限(除非有特殊需求)。为说明权限设置方法,先单独为new-repo设置本地权限,本地权限的优先级高于全局权限。通常设置评审代码权限和提交权限即可,其中前者是使项目提交的代码能够被评审,后者是允许评审者在评审通过后合入所提交的代码。
点击“Edit”:
点击“Add Reference”:
Reference是代码提交的目的地(分支或Tag),Gerrit的权限管理是基于reference进行。默认reference是“refs/heads/*”,这个通常不需要修改。"refs/*"是控制所有提交的reference。点击“Add Permission”:
添加代码评审权限需要选中“Label Code-Review”:
添加组名,使得组内的成员拥有该权限:
点击“Add”,再点击“Add Reference”添加提交权限:
选中"Submit":
点击“Save Changes”使设置生效:
六、检出代码
在Git bash环境下执行“git config --global credential.helper store”。这样就可以保存密码信息,不用每次都输入密码。
点击"Projects-->List-->new-reo-->Gernal":
点击右下角那个小方框(或双击git clone那行字符串然后复制),在git bash终端中粘贴:
用户名填入user1,密码的获取则要麻烦一些。点击右上角的全名:
点击“Settings-->HTTP Password”:
点击“Generate Passsword”:
双击“Password”对应的条目,复制密码,填入"Passwor for"对应的项中:
clone成功!
七、代码提交评审
在提交代码之前,需要进入到代码库主目录下执行:
这样提交的时候日志中就会自动携带Change-ID,提交才能成功:
然后可以用git命令提交代码。提交完毕后需要push到Gerrit评审服务器,push命令为:
如果提交到名称为new-branch的分支则提交命令为:
为简化命令,编辑new-repo/.git/config:
如图所示,在[remote "origin"]一行下面添加“push = HEAD:refs/for/master”,这样就可以用“git push”提交代码评审了:
八、评审代码
new-repo库中有代码提交后,关注这个代码库的用户会收到一个邮件通知:
在浏览器中输入:“http://10.1.5.116/gerrit/4”:
可以点击画红框的“Side-by-SIde”位置查看diff,点击Review填写评审意见。填写评审意见后如果没有问题可点击“Submit Patch Set1”合入代码,如果发现问题则点击“Abandon Change”丢弃修改。
点击“Side-by-SIde”后会弹出页面:
点击“Review”会进入:
如果没有发现问题,可以合入代码,则在“Code-Review”选项中选择“+2 Looks ...”;如果代码需要合入则必须有人评审而且选择此选项。
如果没有发现问题但需要他人同意才能合入代码,则选择“+1 Looks ...”;
如果没有任何建设性意见则选择“0 No score”;
如果没有发现问题但不建议合入则选择“-1 I would ...”;
如果发现问题不允许合入则选择“-2 This shall ...”;但如果其他评审人员认为可以合入,且选择了“+2 Looks ...”,在点击“Submit Patch Set1”时代码仍然可以合入。
评审意见可以在Cover Message下面的框中填入(也可以不填),然后点击“Publish Comments”:
点击“Submit Patch Set1”合入代码:
可以看到Gerrit显示代码已经成功合入。
在提交代码的客户端上,需要执行"git pull"同步代码:
代码同步完成。一次代码评审过程结束。