Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save higuoxing/743dbdf9aabf2e0252b19d07f3186097 to your computer and use it in GitHub Desktop.
Save higuoxing/743dbdf9aabf2e0252b19d07f3186097 to your computer and use it in GitHub Desktop.
1、安装arcanist,clone源代码到安装目录somewhere/,arcanist依赖于libphutil,所以两个都要clone
somewhere/ git clone git://github.com/facebook/arcanist.git
somewhere/ git clone git://github.com/facebook/libphutil.git
2、配置arc,将arc加入到PATH,或在/usr/sbin里面建一个到arc的软链接
export PATH=$PATH:/somewhere/arcanist/bin/
或者:cd /usr/sbin; ln -sf /somewhere/arcanist/bin/arc
* 在系统的~/.bashrc或~/.bash_profile中加上该export语句。
* 运行命令"arc help",来检测安装是否成功。
3、配置arc的编辑器,不然会报错,提示EDITOR环境变量没配置
arc set-config editor "vim"
4、配置phabricator的URL地址
arc set-config default http://phabricator.example.com
5、为项目安装证书,用于Phabricator的认证
arc install-certificate,按提示进行,这里需要你已经注册了
6、在开发分支修改完代码后,不要用git提交,而是用arc diff。提交后Reviewers在pha.yottabyte.cn上会收到通知。此时代码已经提交到本次仓库。注意,必须在 dev branch 上修改代码,不能在 master branch 上修改代码,否则,后面的 arc land 代码提交会失败。
arc diff 后,按提示进行,填上Summary, Test Plan, Reviewers等信息,注意Reviewer不能是提交者,多个Reviewer以英文逗号分隔。
7、通过arc list可以查看已提交Review状态
8、Review被通过后,用arc land提交修改到远程Repo。注意arc land完成后,本地的开发分支会被arc自动删掉。arc land 实际上做了下列操作:
Step 1: 把 dev branch 的代码 merge 到本地的 master branch;
Step 2: 把本地的 master branch push 到中央代码库的 master branch;
Step 3: 删除本地的 dev branch。
9、补充几个问题及解决方案:
Problem 1:
arc在windows下使用时,随机会卡死,几率不高,但一旦出现基本不可解决,可以在执行arc时添加 --trace 参数,打开详细调试信息,查看是卡在哪一步。如果把卡住的命令拿出来手动执行都ok的话,就是这个bug了。bug就是arc使用的phutil库中执行命令的函数实现有问题,在命令执行结束,所有回显读取完之后,再次fread标准输出时,无法正常返回,而是阻塞住不返回,导致无法继续。这个问题目前触发条件不是很清楚,所以没法彻底解决。只有一个规避方案:修改libphutil\src\future\exec\ExecFuture.php文件,在readAndDiscard函数的while循环中添加
if(strstr($output,"xxxxx"))
{
break;
}
这样的代码,其中xxxx换成卡住命令执行结果最后的关键字即可,这样就可以在读到结尾处时跳出循环,不至于卡死。
Problem 2:
arc land失败,显示There is no tracking information for the current branch.
这是表示master分支没有设置track,执行命令
git branch --set-upstream-to=origin/master master
之后就可以正常arc land。
10、参考链接
https://sezina.github.io/2013/07/16/phabricatorming-ling-xing-gong-ju-arcanistde-ji-ben-yong-fa/
官方文档地址:https://secure.phabricator.com/book/phabricator/article/arcanist_diff/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment