phabricator - 通过hook方式实现强制code review

在phabricator上实现强制code review有两种方式,一种是将仓库托管在phabricator上,通过herald的方式来进行,具体的实现方式可以参考 《phabricator - host repository模式下强制code review设置》;另一种是在代码托管服务器上增加hook来实现。本文主要对第二种方式进行讲解。

因为我们公司的代码目前用自己搭建的Gitlab管理,所以这里以Gitlab为例子

  1. 需要在Gitlab服务器上,对应的仓库目录下新建一个 custom_hooks 文件夹(仓库目录不是clone到本地的目录,是Gitlab服务器上的,最原始的)
  2. 在文件夹中新建一个文件,名字为 pre-receive
  3. 修改文件的读写权限 chmod 755 pre-receive
  4. 修改文件的属主 chown git:git pre-receive
  5. pre-receive文件中加入对应的检查逻辑即可

脚本的思路就是取出本次提交的Revision信息,遍历commit message ,检查是否包含字符串 Reviewed By,包含的话则此次push提交成功,否则push失败。

另外,一开始有一个疑问,code review通过后如果改变本地的commit message,查了一些资料,发现arc amend能够将phabricator服务器上的review信息同步到本地,在commit message中增加Reviewed By等内容。

参考资料:

  1. https://docs.gitlab.com/ce/administration/custom_hooks.html
  2. https://secure.phabricator.com/book/phabricator/article/arcanist/

你可能感兴趣的:(phabricator - 通过hook方式实现强制code review)