JR4ever

Phabricator Code Review操作手册

    Phabricator     CodeReview

  1. 更新日志
  2. 概述
  3. 环境的准备
  4. 环境的配置
    1. 配置工程
    2. 安装Arcanist证书
  5. 提交代码审查申请
  6. 代码审查
  7. 推送代码

更新日志

2018-08-30:

  • 更新代码审查申请备注信息的说明及对应截图;
  • 新增arc diff信息提交后的截图;

概述

Phabricator支持两条不同的代码审查工作流,一条叫做“reivew”(审查),是在推送前进行的;另一条叫做“audit“(审计),是在推送后进行的。本文主要介绍review。

Phabricator的代码审查功能目前没有图形化的客户端,只能通过命令行进行操作,使用的工具为Arcanist。

环境的准备

注:本步骤为被审查者需要进行的操作,其他人可以跳过。

环境的配置

配置工程

注:本步骤为仓库管理员要进行的操作,其他人只需要拉取最新代码即可。

在工程根目录下创建.arcconfig文件,并写入以下内容(注意修改phabricator.uri的值为对应地址):

1
2
3
4
{
"phabricator.uri" : "https://phabricator.example.com/",
"history.immutable" : true
}

然后将其提交并推送至远程仓库。

安装Arcanist证书

注:本步骤为被审查者需要进行的操作,其他人可以跳过。

使用命令行工具执行

1
2
cd PROJECT_PATH/ #切换到你的项目目录下,注意替换PROJECT_PATH
arc install-certificate #安装Arcanist证书

使用浏览器访问提示的地址获取API Token(需要登录)

复制API Token,粘贴至Paste API Token from that page:

证书安装完成。

提交代码审查申请

注:本步骤为代码审查的关键步骤之一,请大家仔细阅读。

代码审查发生在提交合并之后,推送之前。之前的git工作流保持不变,只在完成代码提交、分支合并后,使用Arcanist提交代码审查申请。此时被审查者无法再使用git push推送至远程仓库。强行推送时,会看到如下的报错:

完成代码提交、分支合并后,使用命令行工具,切换到工程目录下执行:

1
2
cd PROJECT_PATH/ #注意替换成真实的工程目录
arc diff

此时会自动打开之前定义的文本编辑器

注:

1.首行为代码审查申请的标题,请简明扼要的写明本次申请所涉及的内容;

2.Summary项可以详细介绍本次申请所涉及的内容,使用”Tn“会自动引用对应的任务;

3.Reviewers为必填项,务必准确无误地填入审查者的Phabricator的用户名;支持多人审查,用户名用“,”隔开;此处的admin仅做演示,实际使用时,请修改为自己的审查人。

填写完成后,保存,并关闭文本编辑器(Arcanist会等待文本编辑器程序的退出,因而此处必须完全退出程序)。

此时已完成代码审查的提交的,Phabricator会自动发送邮件通知审查者进行代码审查,也可以手动复制Revision URI发送给审查者。

注意:此时需记下代码审查的ID,此处为“D32”,后面会用到。

代码审查

注:本步骤为审查者需要进行的操作,其他人可以跳过。

审查者收到代码审查申请后,直接访问对应的链接打开代码审查界面。

在这里可以看到修订的文件列表、文件改动的具体内容等,审查者完成代码审查后,可以选择“Accept Revision”(接受该修订版)、“Request Changes”(请求变更)、“Change Reviewers”(改变审查者)等。此外,还可以添加备注信息,用于记录信息或者提醒被审查者做代码修改。

这里选择接收该修订版,被审查者将收到审查通过的通知邮件。

推送代码

注:本步骤为被审查者需要进行的操作,其他人可以跳过。

  1. 审查通过

被审查者收到审查通过的通知邮件后,使用命令行工具执行:

1
2
cd PROJECT_PATH/ #切换到工程目录下,注意替换成真实的工程目录
arc land --revision D32 #提交代码审查申请时自动分配的ID

代码推送成功。

  1. 审查未通过

如果收到的是请求变更的邮件,请按照审查者的说明重新修改代码,并再次执行arc diff,同初次提交代码审查申请时相同,此时会自动打开之前定义的文本编辑器(与之前的文本内容略有不同),填写完成后,保存,退出编辑器程序,以更新代码审查申请。

该过程可能需要重复多次,直到审查者接受了变更,然后执行arc land --revision DXX进行代码推送。

PV:  ・  VV:  ・  UV: