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的实现原理中已经介绍过。
好了,准备把这个提交推送到服务器上吧。