前一阵子在CentOS 6.2上安装了Git/gitosis/ReviewBoard,那个烦啊。主要是gitosis这个东西管理不方便,其次是 Review board安装也比较繁琐,需要在客户端使用hook。
虽然大家已经开始使用,而且用起来感觉比较简单。但是review board工作流过于宽松,程序员不经过批准也可以push代码到远程服务器上。基本上属于君子协定,不太适合对代码提交审查严格的环境。
所以现在开始试用gerrit。这次使用Ubuntu12.04 server。首先说一下gerrit的优势,它已经提供了访问git server的认证和project管理功能,因此避免了使用gitossi或者其他繁琐的管理工具。
1.安装git
sudo apt-get install git-core git-doc
2.添加gerrit2用户,密码也是gerrit2
参考我的博客:http://blog.csdn.net/sheismylife/article/details/7584656
3.下载gerrit最新的war包
http://code.google.com/p/gerrit/downloads/list
我用的是2.4版本。
4.准备Java运行环境
现在可以安装openjdk7了。
apt-get install openjdk-7-jdk
需要重建软链接,否则仍然在用openjdk-6
rm /etc/alternatives/java
ln -s /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java /etc/alternatives/java
5.修改war文件属性
chown gerrit2:gerrit2 gerrit-2.4.2.war
mv gerrit-2.4.2.war /home/gerrit2/
su - gerrit2
chmod -R 777 ./gerrit-2.4.2.war
gerrit2是war文件的拥有者,并且允许其他用户执行。
6.创建gerrit站点
mv gerrit-2.4.2.war /home/gerrit2
su - gerrit2
java -jar gerrit-2.4.2.war init -d review_site
回答一系列问题:(绝大多数默认即可)
如果输入错误,可以删除review_site目录,重新执行上面的命令。数据库用默认的H2,我用MySQL老是出错。
7.SMTP设置
在review_site/etc/gerrit.config中设置如下:
[sendemail]
enable = true
smtpServer = smtp.gmail.com
smtpServerPort = 465
smtpUser = youname@gmail.com
smtpEncryption = ssl
smtpPass = youpwd
sslVerify = false
from = Code Review <yourname@gmail.com>
8.注意事项
a.我碰到启动失败,然后重新启动gerrit 就好了
b.重新启动必须要用全路径,相对路径不行
~/review_site/bin/gerrit.sh restart
c.第一次打开网站注册用户的就是管理员(这种玩法很有意思,不过最好有个文档)
d.我注册用的是google帐号,如果没有vpn翻墙肯定是不行的
e.同样因为用了google帐号,访问网站必须要用vpn翻墙
f.创建project通过网站就可以了,也可用命令行
注意,通过网站创建的时候,需要选中下面的选项。
Create initial empty commit
g.必须创建一个group,把自己帐号加进去,然后project里面要在push权限内加入这个group
即便你是owner权限,也不能通过git push提交数据。
h:要添加客户端的公钥内容,客户端才能访问
端口是29418,clone命令参考下面的格式:
git clone ssh://chenshu@your_server:29418/REPOSITORY_NAME.git
i.客户端配置必须和网站上用户一致。用下面的命令。
git config --global user.name yourname
git config --global user.email youremail
j.网站访问的默认端口是8080
如果改为80端口,需要root权限启动,否则会启动失败。使用root会带来安全问题。自己衡量了。
k.修改etc/gerrit.config里面的web url
[gerrit]
basePath = git
canonicalWebUrl = http://localhost:8080/
将上面的localhost改成域名或者IP地址。
如何进行代码评审,会在以后的文章里面介绍,本文仅仅是描述如何安装和基本的运行。