32.10 Gerrit评审工作流实战

分别再注册两个用户账号dev1@moon.ossxp.com和dev2@moon.ossxp.com,两个用户分别属于Reviewer用户组和Verifier用户组。这样Gerrit部署中就拥有了三个用户账号,用账号jiangxin进行代码提交,用dev1账号对任务进行代码审核,用dev2账号对审核任务进行最终的确认。

32.10.1 开发者在本地版本库中工作

repo是Gerrit的最佳伴侣,凡是需要和Gerrit版本库交互的工作都封装在repo命令中。关于repo的用法在上一部分的repo多版本库协同的章节中已经详细介绍了。这里只介绍开发者如何只使用git命令来和Gerrit服务器交互。这样也可以更深入地理解repo和Gerrit整合的机制,具体操作过程如下。

(1)首先克隆Gerrit管理的版本库,使用Gerrit提供的运行于29418端口的SSH协议。


$git clone ssh://localhost:29418/hello.git

Cloning into hello…

remote:Counting objects:3,done

remote:Compressing objects:100%(3/3)

Receiving objects:100%(3/3),done.


(2)然后拷贝Gerrit服务器提供的commit-msg钩子脚本。


$cd hello

$scp-P 29418-p localhost:/hooks/commit-msg.git/hooks/


(3)别忘了修改Git配置中提交者的邮件地址,以便和Gerrit中注册的地址保持一致。不使用—global参数调用git config可以只对本版本库的提交设定提交者邮件。


$git config user.email jiangxin@moon.ossxp.com


(4)然后修改readme.txt文件并提交。注意提交的时候使用了"-s"参数,目的是在提交说明中加入"Signed-off-by:"标记,这在Gerrit提交中可能是必须的。


$echo "gerrit review test">>readme.txt

$git commit-a-s-m "readme.txt hacked."

[master c65ab49]readme.txt hacked.

1 files changed,1 insertions(+),0 deletions(-)


(5)查看一下提交日志,会看到其中有特殊的标签。


$git log—pretty=full-1

commit c65ab490f6d3dc36429b8f1363b6191357202f2e

Author:Jiang Xin<jiangxin@moon.ossxp.com>

Date:Mon Nov 15 17:50:08 2010+0800

readme.txt hacked.

Change-Id:Id7c9d88ebf5dac2d19a7e0896289de1ae6fb6a90

Signed-off-by:Jiang Xin<jiangxin@moon.ossxp.com>


提交说明中出现了"Change-Id:"标签,这个标签是由钩子脚本"commit-msg"自动生成的。至于这个标签的含义,在前面Gerrit的实现原理中已经介绍过。

好了,准备把这个提交推送到服务器上吧。