arc phabricator 结合 arcanist 使用

arcanist 是 phabricator 接口的命令工具,主要用于提交 diff 和 push review 通过的commit。
安装
下载源码,然后指定系统的环境变量即可
$ some_install_path/ $ git clone https://github.com/phacility/libphutil.git
$ some_install_path/ $ git clone https://github.com/phacility/arcanist.git
指定环境变量
– 修改 .bash_profile(如果装有 zsh, 则修改 .zshrc),下面的 /Users/Grissom/mydocs/arc/arcanist/bin 就是我本机 arc 源码所在的路径
$ export PATH=${PATH}:/usr/local/mysql/bin:/Users/Grissom/mydocs/arc/arcanist/bin
– 然后运行以下命令使之起效
$ source .bash_profile
– 查看是否安装好
$ arc help
– 配置arc的默认编辑器,我使用vim
$ arc set-config editor “vim”
–配置默认的phabricator的uri,uri为团队的phabricator主页的url
$ arc set-config default
--在项目的根目录下建.arcconfig配置文件,文件中至少要填入以下内容
{
"project.name": "对应 phabricator 的 project name",
"phabricator.uri": ""
}



– 为项目安装证书,用于phabricator的认证。
$ arc install-certificate
– 上面命令会提示到指定 uri 获取 token, 然后粘贴下去,就 ok 了
使用
–创建本地分支
$ git checkout -b b_test_0729
– 修改代码, 然后提交
$ git add . && git commit -m “test”
–创建 revision 并提交到 phabricator
$ arc diff b_test_0729
–上面命令会弹出 vim ,需要填写一些信息,如下
«Replace this line with your revision title> – title 必填
Summary: – 简述 必填
Test Plan: – 测试计划 必填,如果没有,可以填: NO
Reviewers: – 指定审核人,必填,注意审查人是在 phabricator 上注册的用户账号,而且 Reviewers: 与审查人之间不能有空格,这是个坑
Subscribers: – 可删除
# NEW DIFFERENTIAL REVISION
# Describe the changes in this new revision.
#
# arc could not identify any existing revision in your working copy.
# If you intended to update an existing revision, use:
#
# $ arc diff –update
提交
如果 Reviewer 审查通过,就可以用 arc 进行提交了
$ arc land -- 会自动合并到 origin master 并且删除当前本地分支
arc的全局配置
配置arc的默认编辑器,我使用vim
$ arc set-config editor "vim"
配置默认的phabricator的uri,uri为团队的phabricator主页的url
$ arc set-config default http://phabricator.example.com
项目的根目录下建.arcconfig配置文件,文件中至少要填入以下内容
{
"project_id" : "your project name",
"conduit_uri" : "your phabricator url"
}
该配置文件还可以配置静态代码检测引擎(lint)和单元测试引擎。
为项目安装证书,用于phabricator的认证。
yourproject/ $ arc install-certificate
 在项目中使用arc
arc help [--full | [COMMAND]] 查看帮助文档,接参数--full查看所有命令的详细用法,接具体的命令[COMMAND]如arc help diff可以查看该命令的详细用法。
想phabricator提交review request(Differential).修改完代码后,使用arc diff 命令提交review request,该命令会产生一个包含如下内容的文件要求填写:
<>
Summary:
 按照提示填写后,保存退出,arc就会自动提交request。Reviewers用逗号隔开,Maniphest Tasks填相关联的phabricator上的task_id,如T100。Test plan暂时没用过,官方文档:http://www.phabricator.com/docs/phabricator/article/Differential_User_Guide_Test_Plans.html
提交完成后,会产生一个形如http://phabricator.example.com/D24的url,url中的D24是revision_id。
arc diff --update 更新对应的review request。该命令产生一个如下的文件,按提示填写保存退出,arc会提交更新。
arc commit --revision 提交对应提交代码更改,这个命令把svn commit的工作也做掉了,直接提交到代码库。
arc todo [option]可以快速给自己在phabricator上创建task,[option]用于把task CC给其他人.
arc tasks [options] 查看Maniphest的tasks。
arc amend --show 查看当前项目的differentials,arc amend --revision --show 查看指定revision_id的differential。



执行安装证书命令,会看到如下内容
按照提示,在浏览器里输入 http://phab.yongche.org/conduit/login/ ,会看到如下内容
拷贝API token到命令行,如果看到如下内容,表明证书安装成功
sucess!API Token installed



切忌执行命令:arc set-config editor “vim” 意思是配置arc的默认编辑器是vim 否则你不配置



参考:
https://secure.phabricator.com/book/phabricator/article/arcanist_lint/
Lint是程序语言检查工具的统称,通常用来分析代码并报出代码中的错误及警告。



可以通过如下命令列出当前支持的Lint



$ arc linters
根据你项目的需要,在项目工作目录下创建配置文件 .arclint




$ cd yourproject/

yourproject/ $ $EDITOR .arclint

yourproject/ $ cat .arclint

{

“linters”: {

“merge-conflict”: {

“type”: “merge-conflict”

},

“php-syntax”: {

“type”: “php”,

“include”: “(\.php$)”

}

}

}

五、提交代码到Review状态

注意:arc diff的详情,请参照 https://secure.phabricator.com/book/phabricator/article/arcanist_diff/

arc diff
如下以将Arcanist配置文件提交到项目为例,输入如下命令提交代码到Review状态
$ arc diff
输入命令,将看到如下内容
其间,命令行会提示你输入概述,测试计划,修订人(即你希望的代码reviewer),以及订阅者,内容如下
提交成功后,可以在Phabricator的”Diff 检阅”里面看到你的提交处于”等待Reviewer审查”的状态
六、Reviewer审核代码
代码Reviewer可以线下或者通过线上来完成代码审核,审核通过后在Phabricator的”Diff 检阅”里面找到相应的提交,并给出意见,通过或者拒绝
七、正式发布代码
代码通过Review以后,作者可以在Phabricator的”Diff 检阅”里面看到你的提交处于”Ready to Land”的状态
输入如下命令正式发布代码
$ arc land
当你看到如下内容时,一次成功的提交已经完成了



首先在安装Phabricator 之前启动相应的环境.
nginx.start
php-fpm.start
mysql.start
Phabricator 安装
从github上clone关键组件
先在本机建一个根目录,本文为:~/phabricator (以下用$BASE_DIR代替根目录),然后
git clone https://github.com/facebook/libphutil.git
git clone https://github.com/facebook/arcanist.git
git clone https://github.com/facebook/phabricator.git
修改nginx配置文件
打开该路径下的配置文件:
/usr/local/etc/nginx/nginx.conf
修改相应的配置如下:
server {
listen 80;
server_name pha.yjmyzz.me; # 该域名必须为本机的本地域名或者IP如:127.0.0.1必须带有.的有效ip或者域名
root /Users/xxxxx/phabricator/phabricator/webroot; #phabricator安装路径下的对应文件
try_files $uri $uri/ /index.php;
location / {
index index.php;
if ( !-f $request_filename ){
rewrite ^/(.)$ /index.php?path=/$1 last;
break;
}
}
location /index.php {
fastcgi_pass localhost:9000;
fastcgi_index index.php;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
}
}
添加上面这一段即可,注意server_name后的域名以及root根目录要换成自己的实际参数。
phabricator 启动及配置
直接将php-fpm及nginx启动即可,然后浏览http://pha.yjmyzz.me/ (即:刚才nginx中server配置的域名,本机配置时,可在hosts中增加127.0.0.1 pha.yjmyzz.me以方便测试),就能看到下面的界面:
意思是没有配置mysql,系统无法连接mysql,注意下面的4行命令,已经告诉你怎么处理了,按它的提示来就行了,命令行下,进入根目录,输入以下命令:
$BASR_DIR/bin/config set mysql.host server-name (127.0.0.1)
$BASR_DIR/bin/config set mysql.port 3306 
$BASR_DIR/bin/config set mysql.user root 
$BASR_DIR/bin/config set mysql.pass **
(换成你的密码)  
设置完成后,再次浏览刚才的界面,就能进去了,可能第1次还会提示创建管理员账号啥的,按提示来就可以了。
进入主界面后,会看到:
左上角有一段提示:You have xx unresolved setup issues… 这是告诉你还有其它些配置项需要配置,点击这个链接,看提示一个个配。
至此 Phabricator 安装完毕。
在需要code review 的相应git工程目录下 创建如下配置文件并写入相应配置如下:
创建 .arcconfig 文件
{
“phabricator.uri” : “http://xx.100.19.xxx:8080”, # 相应的phbricator主机地址
“editor”: “vim”, # 打开方式
“base”: “git:HEAD^”,# 相应的 git 节点,设置为最新git节点
“arc.feature.start.default”: “develop”, # 起始 git 分支
“arc.land.onto.default”: “develop”, # push 到的 目标分支
“arc.land.update.default”: “rebase”, # land 的方式
“history.immutable”: false
}


Category web