Phabricator是Facebook开源的一个可视化的代码审查工具

安装

1
2
git clone https://github.com/phacility/libphutil.git
git clone https://github.com/phacility/arcanist.git

arc执行文件路径加载到系统路径并加载

1
2
3
source ~/.bash_profile

arc help

配置

在项目根目录下新建.arcconfig配置文件,内容如下:

{
  "project_id" : "your project name",
  "conduit_uri" : "your phabricator url"
}

配置文件其他参数:

  • phabricator.uri : 唯一,Phabricator 安装的网址,本地连接该网址,并传递提交信息上去供审查;
  • repository.callsign : 在Diffusion中创建仓库时的callsign;
  • history.immutable : 配置arc是否能修改working copy的历史。默认情况下,arc可以在git上重写一些没有发布的提交历史;
  • load : 添加额外的Phutil库;
  • https.cabundle: 在使用https时,选择一个https的证书;
  • lint.engine : 配置项目中 链接规则,使用一个ArcanistLintEngine的子类;
  • unit.engine : 配置项目中单元测试的规则,使用一个ArcanistUnitTestEngine的子类;
  • http.basicauth.user : 连接到 Phabricator的用户账号;
  • http.basicauth.pass : 连接的密码;
  • https.blindly-trust-domains : 使用https时,信任的domain的列表。

常用命令

arc diff master --update D***** # 提交跟某个分支的diff到已有的diff版本中

arc diff  # 提交默认的diff
arc diff xxx --preview  # 提交针对某个分支的commit,并只生成diff文件,不在web端创建revision
arc which # 查看arc diff 会提交哪个范围的diff
arc land  # 提交代码,删除该分支 or 使用 git push
arc list  # 查看有哪些revision和其状态
arc diff --create             # Force "create"
arc diff --update <revision>  # Force "update"

提交输入信息

  • 开头(最上面):本次修改的详细描述,必填,可以换行(从第一行到Summary行)。
  • Summary: 本次修改的简短描述,必填。
  • Test Plan: 详细说明测试计划,必填。
  • Reviewers: 审查人的账户,多个使用”,“隔开。可以不填,之后打开Phabricator补上。需要注意的是账户不能包含代码提交者。
  • Subscribers:非必填订阅人,多个使用”,“隔开。

审查者操作

  • Comment:评论。针对某行代码进行评论,直接点击代码行便会弹出
  • Accept Revision:接受变更。经过几次Comment沟通后,代码已完善,通过审核
  • Request Changes:不行,代码需要继续修改。
  • Resign as Reviewer:重新指定审查代码的人。
  • Commandeer Revision:字面意思是将这个Revision据为己有的意思,实际上这个时候Reviewer的身份已经变为Owner的身份了,不能再进行Review了,但是Comment还是可以的。
  • Add Reviewer:添加审查人。
  • Add Subscribers:添加订阅者。

被审查者操作

  • Comment:评论。针对某行代码进行评论,直接点击代码行便会弹出。
  • Abandon Revision:废除版本。废除后,这个版本就不需要再审核了。
  • Plan Changes:计划变更,发现了一些问题或者需求变更,正在改。
  • Add Reviewer:添加其他审查人。
  • Add Subscribe:添加订阅者。

示例

比如说当前在master分支:

  • git checkout -b fix_abc # 先开 local branch 再修改
  • git commit # 产生 commit C1(可以在Tower中操作)
  • arc diff master # 送出 code review 请求 D1
  • (在 branch fix_abc) arc land 或者是 (arc land –onto master)

提交之后,可以切回master分支做别的事情,要land前需要先切回fix_abc。

如果review有修改,需要更新commit:

  • git checkout fix_abc
  • ( 修改后 ) git commit –amend # 使用 amend,不要新增 commit
  • arc diff master # arc diff 要指定同样的范围,若范围和之前不同,会弄乱 phabricator 的记录。

参考