Last active
July 28, 2020 03:25
-
-
Save zhaohangbo/01fb4c06cb97389257076edd19926c64 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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