phabricator强制进行code review的方法
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,1.拦截方式强制进行code review,有两种方式:将仓库托管在phabricator上,通过herald的方式来进行在代码托管服务器上增加hook来实现由于我们的代码托管到gitlab上,所有我
千家信息网最后更新 2026年11月02日phabricator强制进行code review的方法
1.拦截方式
强制进行code review,有两种方式:
将仓库托管在phabricator上,通过herald的方式来进行在代码托管服务器上增加hook来实现由于我们的代码托管到gitlab上,所有我们采用第二种方式进行code review2.gitlab server端添加hook
gitlab添加hook的方式有两种: 局部添加,作用于当前这个仓库 全局添加,作用于全部仓库 2.1 局部配置
cd /srv/gitlab/data/git-data/repositories/root/pipeline-example-go.git ###gitlab serve端进入到具体的仓库路径下mkdir custom_hooks #创建自定义hook目录touch pre-receive #创建pre-receive 文件chmod 755 pre-receive #修改文件权限pre-receive 钩子,在有人用 git push 向仓库推送代码时被执行,其内容如下:#!/usr/bin/env pythonimport sys,osimport fileinputimport reimport jsonimport requestsdef has_been_reviewed(start_commit, end_commit): cmd = 'git rev-list %s...%s' % (start_commit, end_commit,) Flag = False commits = os.popen(cmd).readlines() pattern = re.compile(r'Differential Revision: (.*)') for commit in commits: cmd = 'git rev-list --format=' + '%s%b ' + '--max-count=1 %s' % commit res = os.popen(cmd).readlines()[-2] match_str = pattern.match(res) if not match_str: print("Please use 'arc diff' to commit") continue http_url = match_str.group(1) url = "https://xxx/api/differential.query?api.token=*****" info = json.loads(requests.get(url).text) for i in info['result']: if i['uri'] != http_url: continue if i['statusName'] == 'Accepted': Flag = True else: print("Current Status: %s, Need Review and Accepted" % i['statusName']) break if Flag: sys.exit(0) else: sys.exit(1)if __name__ == "__main__": for line in fileinput.input(): args = line.split(' ') start_commit = args[0] end_commit = args[1] if start_commit != '0000000000000000000000000000000000000000' and end_commit != '0000000000000000000000000000000000000000': has_been_reviewed(start_commit, end_commit)代码解释:1.git rev-list --format=%s%b --max-count=1 ${commit_id} #获取git commit 的提交信息,默认git commit -m 后的信息,但是使用arc diff 之后,arc diff的信息会覆盖之前的git commit 的内容2.requests.get("https://***/api/differential.query?api.token=***") #通过ph的api接口获取到所有的differential 信息,其中token 可通过https://***/conduit/login/ 获取3.#获取differential的信息之后,选取uri为当前提交的revision,若状态Accepted,表示代码review通过,退出程序,返回状态码0,表示不拦截4.#若获取状态不为Accepted,则返回状态码非0,表示执行失败,拦截git push请求***
2.2 全局配置
1.开启gitlab的自定义hook参数vim /etc/gitlab/gitlab.rb #配置如下 gitlab_shell['custom_hooks_dir'] = "/opt/gitlab/embedded/service/gitlab-shell/hooks/custom_hooks" #取消这行注释,默认是注释2.mkdir -p /opt/gitlab/embedded/service/gitlab-shell/hooks/custom_hooks/pre-receive.d # 创建目录3.touch /opt/gitlab/embedded/service/gitlab-shell/hooks/custom_hooks/pre-receive.d/pre-receive #创建文件pre-receive 4.chmod 755 /opt/gitlab/embedded/service/gitlab-shell/hooks/custom_hooks/pre-receive.d/pre-receive 5.pre-receive #文件内容如上6.gitlab-ctl reconfigure #重新加载gitlab的配置, 使配置生效
仓库
代码
信息
方式
配置
文件
状态
内容
托管
作用
全局
局部
注释
目录
强制
参数
如上
接口
服务器
权限
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
百单网互联网科技有限公司
深圳市人人互联网科技有限公司
广州淘业互联网络科技
互联网和科技创新
与互联网科技公司
紫鲸互联网科技
世界互联网领先科技成果
成都互联网科技公司
互联网科技论文
壹账通互联网科技
广州凡科互联网科技
互联网科技视频素材
左右互联网络科技
深圳前海聚择互联网科技有限公司
科技互联网的估值
湖北码尼互联网科技有限公司电话
移动互联网年度科技创新
高科技互联网套路
互联网科技创新创业项目
现代科技的标志之一的互联网
咖啡
广州紫鲸互联网科技有限公司
互联网科技媒体
云电互联网科技
互联网科技论坛
亿人帮互联网科技
互联网 科技馆
陕西彩京云互联网科技有限公司
伍佰万互联网科技是干嘛的
六子台科技互联网展会