第一次在公司见到 Gerrit、一面懵逼。什么xx玩意.....

Gerrit,一种凋谢源代码的代码审查软件,应用网页界面。利用网页浏览器,同一个团队的软件开发者,能够互相审阅彼此批改后的代码,决定是否可能提交,回退或是持续批改。它应用版本控制系统Git作为底层。

它分支自Rietveld,作者为Google公司的Shawn Pearce,原先是为了治理Android我的项目而产生。[2]这个软件的名称,来自于荷兰设计师赫里特·里特费尔德(Gerrit Rietveld)。

-----来自 wiki

而后公司同时还应用到了 GitLab、我懵逼了。失常来说、GitLab 曾经能满足大部分日常到应用了、到底为啥还要应用 Gerrit。

它分支自Rietveld,作者为Google公司的Shawn Pearce,原先是为了治理Android我的项目而产生。[2]这个软件的名称,来自于荷兰设计师赫里特·里特费尔德(Gerrit Rietveld)。

=== GitLab wiki

起初理解到它们两者之间的关系和角色、相似如下图片

公司给到的 GitLab 账号角色是 Reporter、只能 pull 而不能 push,如果想要 push 代码到分支上、只能先 push 到 Gerrit 中、Gerrit 可能存在代码插件或者人工review、通过之后能力push 胜利。Gerrit 和 GitLab 之间会做同步、所以你能即时的在 GitLab 中看到你 push 的代码。

应用 Gerrit 的时候会将一个hook脚本搁置在你的我的项目的 .git/hooks中、

外面有各种 hook的脚本、只有你将后缀.sample去掉就会在特定的时候执行。

应用 Gerrit 的时候会用其中的一个脚本在你的commit comment中减少一个 Change-Id的随机值

在 Idea 中 commit 的时候、如果你的我的项目中存在 hook 脚本、则会呈现是否执行hook 脚本的选项

咱们尝试在 commit 之前进行一次 compile、因为有时候 push 到近程仓库的代码可能并不能编译通过(把不能失常运行甚至不能编译通过的代码push下来、真的会影响其余共事开发)

咱们在 pre-commit 中、减少以下命令、因为我的我的项目是多个模块的、所以还要进去到具体子模块中的 pom文件中。执行的时候目录是在跟 .git 目录在同一层的

而后进行 commit

能够在执行 commit 之前的确执行了一次 compile。如果执行 hooks的时候返回 非0 就会阻止此次 commit

应用 Gerrit 还有一个点就是、push的时候不能间接push到原来的近程分支

 # 这样子是 push 会间接绕过 Gerrit 的代码审阅、所以不能push胜利
 git push origin master
 # 这样子能力
 git push origin head:refs/for/master

https://www.cnblogs.com/kevingrace/p/5651447.html

https://zh.wikipedia.org/wiki/GitLab

https://zh.wikipedia.org/wiki/Gerrit

GitLab吧间接(不须要Gerrit配合),界面十分好看,应用办法也很简略,而且也能满足之前的代码审核的要求。所以大家也都转去GitLab吧。