2012年4月20日星期五

初试 Gerrit

初次接触Gerrit还是2011年下半年的事情,那时候接触android也就1年左右,但是由Gerrit的git仓库可以看出,实际上Gerrit的第一次完整提交是在2008年10月,Gerrit的开发应该在2008年初,所以Gerrit跟android一直在一起,亦即Google在android出现之前已经意识到仓库管理的问题,然后研究自己的管理工具。

搞android开发的人,难免会接触到Gerrit,因为除非你一直在搞应用,不搞DIY,否则公司对于公司的管理,很少能避免Gerrit,其实Gerrit没我们大多数人想的那么差,那么不好用,其实类似于git的诞生,Gerrit同样是一款不错的作品。为了显示Gerrit的一个全貌,下面的截图取自Google自家使用的Gerrit(https://android-review.googlesource.com/):

说实话,Gerrit本质上是一个基于java的web应用,但是该web应用不基于任何已知的三大框架(SSH),UI基于SWT构建,表面看起来没什么,实际上功能很是强大。下面一张截图显示的是审核页面,也是整个Gerrit工具的精髓部分:
Gerrit管理开发者提交源码使用的是ssh认证,也可以通过http随机生成密码进行认证,Gerrit的认证管理是其支撑功能,没有它,就没有后面的审核功能。下面展示的是Gerrit权限管理所呈现的群组(groups):
其实上面的3个截图基本上涵盖了Gerrit天生就有的3个基本功能:提交展示(1),审核(2),权限管理(3)。了解一个事物的最简洁途径就是使用它,所以下面先说一下Gerrit的获取。

Gerrit的获取以及安装基本上就是两个途径:

  • 源码:请确保有maven自动构建工具
    git clone https://code.google.com/p/gerrit
    mvn package
        
    ok,如果运行无误,生成的war包在gerrit/gerrit-war/target下。
  • 二进制包: https://code.google.com/p/gerrit/downloads/list
如何运行这个war包呢?同所有的war包一样其实执行的方式不外乎两种:1.放在一个web容器中;2.使用java开启守护进程。这里使用第二种方式:
java -jar gerrit.war init -d review_site
其中gerrit.war是要运行的程序,review_site是要使用的站点目录,没有则创建。执行该命令后就进入了交互模式。ok,睡觉,有空补充吧。