Arcanist是Phabricator提交代码评审的客户端工具,不使用Arcanist也能提交代码评审,方法是在Differential界面点击右上角的“Create Diff”创建Diff和Revision,但开发人员使用Arcanist提交则会方便很多,特别是对于喜欢使用命令行的同学。
对于Linux下安装比较方便,可以参考我在知乎上的回答:http://www.zhihu.com/question/19977889/answer/13539702,这里介绍一下Windows下的安装和使用。
1、 安装PHP
需要安装5.2或以上版本,可到PHP官方网站下载:http://www.php.net/,建议下载PHP 5.4 VC9x86 Non Thread Safe版,安装步骤:
将.PHP 扩展名关联为一种文件类型(需要以管理员权限运行):assoc .php=phpfile
将phpfile文件类型关联到适当的 PHP 可执行文件(需要以管理员权限运行,假设PHP安装目录为C:\PHP):ftype phpfile="C:\PHP\php.exe" -f "%1" -- %~2
2、安装SVN客户端
需要安装svn命令行版本的客户端(不是TortoiseSVN),可以到Subversion官方网站http://subversion.apache.org选择合适的版本,推荐安装CollabNet的Subversion1.8.0,下载地址(需要注册):http://www.collab.net/downloads/subversion
下载后直接安装即可,测试:
C:\>svn
Type 'svn help' for usage.
注意:如果你正在使用TortoiseSVN并且版本过低,有可能无法与CollabNetSubversion一起维护同一个代码库副本,此时需要升级你的TortoiseSVN。
3、 安装Arcanist及libphutil
下载地址:
https://github.com/facebook/arcanist/archive/master.zip
https://github.com/facebook/libphutil/archive/master.zip
下载后解压到指定的Phabricator目录(如C:\phabricator),并把目录名分别修改为arcanist、libphutil,并把arc.bat所在目录(例如C:\phabricator\arcanist\bin)加入到PATH环境变量中。
测试:
C:\>arc
Usage Exception: No command provided. Try 'arc help'.
4、 安装GitPad
安装GitPad使得你可以使用Notepad来作为Arcanist的编辑器,下载地址:https://github-gitpad.s3.amazonaws.com/GitPad.zip
下载后解压缩,双击运行GitPad.exe,在弹出窗口中点击“是”按钮即可安装到%AppData%目录下。Notepad支持保存为UTF8编码文件,不存在编码问题。
5、 安装diff
Arcanist需要使用diff作为代码比较工具,如果你安装了Cygwin则默认已经有diff,否则需要单独安装,下载地址:http://download.csdn.net/download/sysdzw/3614746
为避免与svn的diff冲突需要把diff.exe修改为diffex.exe,同时把arcanist\src\repository\api\ArcanistSubversionAPI.php文件第281行内容“'diff--depth empty %s',”修改为“'diff --depth empty --diff-cmd diffex -x -U%d %s', $this->getDiffLinesOfContext(),”
6、 配置Arcanist
在项目代码根目录创建.arcconfig文件,内容例如
{
"project_id" : "your_project_name",
"conduit_uri" : "http://phabricator_host/"
}
7、 使用Arcanist提交Revision
默认:arc diff . --encoding GBK
修改已存在的diff: arc diff . --update D1 --encoding GBK
创建新的diff: arc diff . --create --encoding GBK
从文件提取信息创建:arc diff . --encoding GBK --create --message-file ~/arcdiff.txt
注意:如果代码是UTF-8编码则不需要“--encoding GBK ”参数;arc diff可支持一次创建多个目录的diff,如不指定目录则为整个库。