概述
Gerrit,中文发音大致为 "杰瑞特"。
最初是为管理Android项目而产生。 最早由Python写成,第二版后,改成用Java与SQL
Go,Qt等知名项目使用Gerrit做代码审查
Gerrit分支自Rietveld。 Python之父Guido van Rossum在Google时开发了Mondrian(命名自荷兰画家皮特·蒙德里安),作为内部代码审查工具,后面开源时取名叫Rietveld。该名称为致敬荷兰设计师赫里特·里特费尔德(Gerrit Rietveld)。。所以也不难理解后面的fork版本为啥叫Gerrit
Gerrit的官网 https://www.gerritcodereview.com/
安装
使用
可参考Go的Contribution Guide中关于Gerrit的部分
第一次给Go提交代码的开发者,可以用熟悉的github方式,Sending a change via GitHub
但更推荐Sending a change via Gerrit:
简而言之:
- git clone 项目
- 切换分支,git checkout -b your_branch
- 修改文件,而后git add 要提交的文件
- git codereview change (这步和git的commit作用一样,但命令不同; 这步会跳出编辑框,输入commit信息,记得最后要加个换行)
(如果还要再次修改文件)
- 再次修改项目,再次git add 要提交的文件
- git codereview change (会用新的改动amend掉老的commit)
(如果可以提交了)
- git codereview mail
例如:
和通过github直接相比,这里的Owner会是你的名字,而非GerritBot
Sending multiple dependent changes
如果想提交多个独立的改动,形成一个Relation chain,就像这样
在每次修改并git add 相应文件
后,不使用 git codereview change
, 而是用git commit -s -m"xxxx信息"
最后再 git codereview mail 最近一次提交的commitId
最后git codereview mail 最近一次提交的commitId
时可能会报错:
commit 075e77a: missing Change-Id in message footer
这是因为提交信息中,没有加上Change-Id,
按照提示,执行 f=
git rev-parse --git-dir/hooks/commit-msg ; mkdir -p $(dirname $f) ; curl -Lo $f https://gerrit-review.googlesource.com/tools/hooks/commit-msg ; chmod +x $f
后再试即可
成功提交后如下图所示:
不过看起来这种情况,用all: xxx来提交单次改动就行了,没有必要用 Relation chain
更多参考:
Single-Commit Work Branches和Multiple-Commit Work Branches