最近使用Phabricator来进行 code review, 总结一下
1. 介绍:
Phabricator是一套基于Web的软件开发协作工具,包括代码审查工具Differential,资源库浏览器Diffusion,变更监测工具Herald,Bug跟踪工具Maniphest和维基工具Phriction。Phabricator可与Git、Mercurial、Subversion集成使用。
Phabricator是开源软件,可在Apache许可证第2版下作为自由软件分发。
Phabricator最初是Facebook的一个内部工具,主要开发者为Evan Priestley。Evan Priestley离开Facebook后,在名为Phacility的新公司继续Phabricator的开发。
2. 配置工具
# 假设是Ubuntu
sudo apt-get install php7.0-cli php7.0-curl php-pear
# git clone下载源文件。
# 或者,你也可以直接点击上面的链接去GitHub下载压缩包,下载完成后解压
mkdir ~/workspace
cd ~/workspace
git clone https://github.com/facebook/libphutil.git
git clone https://github.com/facebook/arcanist.git
# 编辑~/.bashrc 或者 ~/.zshrc ,加入如下一行,之后source ~/.bashrc
export PATH=~/workspace/arcanist/bin/:${PATH}
# 如果没有项目配置,可以运行下面的命令设置全局的参数:
arc set-config default "你Phabricator系统访问URL"
arc install-certificate
#
# 在~/.bashrc里添加下面两行, 使用vim编辑工具来编辑
export EDITOR=vim
alias arc='LC_ALL=C arc'
# 并在命令行执行,使它生效
source ~/.bashrc
或者
source ~/.zshrc
3. Arcanist - 命令交互
我们用这个工具提交变更和审查请求,对变更做出更改,或者在通过审查后发布到远程仓库分支中。
常用的命令有:
arc diff:发送变更详情和审查请求
arc land:推送变更(Git and Mercurial),当通过审查后使用这个命令
arc list:显示变更处理的情况
arc cover:查找最有可能审查变更的人
arc patch:给版本打补丁
arc export:从Differential下载补丁
arc amend:更新Git commit
arc commit:提交变更(SVN)
arc branch:查看Git branches更加详细的信息
3. 命令行工具
本文档默认使用git,其他版本管理工具自行搜索响应方法。假设使用dev branch
# 本地开发
git checkout -b feature_1
# 修改本地文件
git commit -a -m "change something...."
# 提交code review
arc diff
# 可按如下格式填写,也可不填写,然后打开生成的URL,在网页中进行填写
# Summary: something you want to say
#
# Test Plan: N/A
#
# Reviewers: xxx1, xxx2
#
# Subscribers:
# 本地修改后再次提交code review(这个revision是上次创建code review时的id,比如D4063)
# arc diff --update 4063 commit_id (这个命令如果有问题,使用下面)
arc diff commit_id
# reviewer已经Accept之后,提交代码(不要用git push!):
arc land feature_1
# arc land 默认提交到master分支,可指定提交分支--onto:
arc land feature_1 --onto dev
# 如果报错找不到对应的revision,带上revision号(比如4063)运行:
arc land --revision 4063
# land之后,feature branch会被自动删除!!!
日常操作tips:
背景:
本地仓库有二个分支:maste分支及非master分支;
在远端项目仓库下有自己的分支(非master分支),用于提交修改的代码;
远端分支下的master分支也变更啦(有其他人的merge)。
现在需要借助arc review和提交自己分支修改的代码到master分支。
常用操作:
切换到本地的master分支
$ git checkout master
从远端master分支拉代码到本地进行合并
$ git pull origin master
切换到本地的非master分支
$ git checkout sr
将本地仓库的master merge到非master分支
$ git merge master
然后使用arc提交review
$ arc diff master
成功的话,会给个网址,然后点击edit revision,选择review人提交,等待accepted后
$ arc land --onto master
如果成功更好,如果失败且是因为远端库master又做了改变,则:
切换到master分支,git pull origin master后
$ git checkout sr
$ git merge master
$ arc diff --update 之前提交的网址diff后数字
经过review人再次accepted,
$ arcl land --onto master
成功。
PS:arc用到的命令有arc list; arc diff; arc land --onto master; arc diff --update 之前提交的编号