gerrit 自动添加 reviewers

Posted by Luffyao on Friday, December 20, 2019

前言

我想用过 gerrit 的同学都知道,这个真的是个神 code review 工具,可以 verify, view, 还可以 cherry-pick 等等功能。这里我不做过多解释。有需要的可以自行百度了解基本知识。 但是就是有一点困惑我很长时间,就是每次一个新的 commit,就要加上整个 team 的同事 review(至于为什么要加整个 team 的,主要是 PM 规定的,说是多人 review,提高代码质量)。所以每次一个新的 commit,就要去网页上,加上一整个 team 的人进去,平时可能你不会觉得怎么样。但是我现在做微服务开发,经常没事所有的 services 用的 sidecar 的 tag 换一遍,所以很多个 service 都要修改,提交。也许你会说,写个脚本就不就好了嘛,是的。我们写了个脚本,可以自动修改,然后 commit。但是还是要手动去加 members 去 review,很麻烦(尤其是网络不稳定的时候)。然后翻墙找了下,原来人家 gerrit 早就提供了命令可以在 push commit 的时候加人 review。我写了个简单的脚本,在这里记录备忘下。可以翻墙的,推荐看官方文档 GERRIT_REVIEW,讲解很详细。

Script 实现

这个脚本很简单,就是把你想要添加的 reviewers 的邮箱编写到一个文件中,然后读出来,拼接在 git push 命令后面。

auto_add_reviewers.sh 的内容:

#/bin/sh
# auto commit and add reviewers

if [ $# -ne 3 ]
then 
echo "usage:$0 repo_name branch_name maillist_filename"
exit
fi

repo=$1
branch=$2
maillist_file=$3

maillists=""
for line in `cat $maillist_file`
do 
maillists+="r=$line,"
done

cd $repo
git push origin HEAD:refs/for/$branch%${maillists%?}

maillist.txt 的内容:

zhangsan@163.com
lisi@163.com
wangwu@163.com

参考命令:

./auto_add_reviewers.sh test_repo master maillist.txt

总结

之所以我把 maillist 单独提出一个文件来,一是为了方便修改,添加,另一方面是人太多的话,直接加在 push 后面,会很难维护。

关于这个脚本还有,就是在新建 commit 的时候使用下就好了,后面 patch 的时候,并不需要再用了,因为此时这个 commit 已经添加了所有想要添加的 reviewers 了。

参考: