关于git:Gerrit-GitLab-Hooks

7次阅读

共计 1356 个字符,预计需要花费 4 分钟才能阅读完成。

第一次在公司见到 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 吧。

正文完
 0