Phabricator入门手册

http://www.oschina.net/question/191440_125562


Pharicator是FB的代码审查工具,现在我所在的团队也使用它来进行代码质量的控制。其提供了一个differential(code review)命令行工具Arcanist(arc)。本文仅从本人的日常使用中总结出Arcanist比较常用的用法做个简单介绍。

  环境说明

  • OS: OS X Mountail Lion
  • SCV: svn
  • IDE: Eclipse

  安装

  • 将Arcanist的源码拷贝到本地
  1. somewhere/ $ git clone git://github.com/facebook/libphutil.git
  2. somewhere/ $ git clone git://github.com/facebook/arcanist.git

复制代码

  • 将arc的路径加入到系统路径中
  1. $ export PATH=$PATH:/somewhere/arcanist/bin/

复制代码

  或在系统的profile或是bash(如果用bash)的配置文件的末尾加上这一句。

  • 命令行中输入arc看提示确认是否安装成功。

  arc配置

  • arc的全局配置

  配置arc的默认编辑器,我使用vim

  1. $ arc set-config editor "vim"

复制代码

  配置默认的phabricator的uri,uri为团队的phabricator主页的url

  1. $ arc set-config default http://phabricator.example.com

复制代码

  • 在项目的根目录下建.arcconfig配置文件,文件中至少要填入以下内容
  1. {
  2. "project_id" : "your project name",
  3. "conduit_uri" : "your phabricator url"
  4. }

复制代码

  举个例子:

  1. {
  2. "project_id" : "HelloWorld",
  3. "conduit_uri" : "http://phabricator.example.com"
  4. }

复制代码

  该配置文件还可以配置静态代码检测引擎(lint)和单元测试引擎。

  • 为项目安装证书,用于phabricator的认证。
  1. yourproject/ $ arc install-certificate

复制代码

  接着按照命令行提示操作就OK了。

  弄完这一步,才能真正在项目中使用arc。

  在项目中使用arc

  • arc help [--full | [COMMAND]] 查看帮助文档,接参数--full查看所有命令的详细用法,接具体的命令[COMMAND]如arc help diff可以查看该命令的详细用法。
  • 想phabricator提交review request(Differential).修改完代码后,使用arc diff <path>命令提交review request,该命令会产生一个包含如下内容的文件要求填写:
  1. <<Enter Revision Title>>
  2. Summary:
  3. Test Plan:
  4. Reviewers:
  5. CC:
  6. Maniphest Tasks:
  7. # NEW DIFFERENTIAL REVISION
  8. # Describe the changes in this new revision.
  9. #
  10. # arc could not identify any existing revision in your working copy.
  11. # If you intended to update an existing revision, use:
  12. #
  13. #   $ arc diff --update <revision>

复制代码

  按照提示填写后,保存退出,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 <revision_id>更新对应的review request。该命令产生一个如下的文件,按提示填写保存退出,arc会提交更新。
  1. # Updating D27: hahahah
  2. #
  3. # Enter a brief description of the changes included in this update.
  4. # The first line is used as subject, next lines as comment.
  5. #
  6. # If you intended to create a new revision, use:
  7. #  $ arc diff --create

复制代码

  • arc commit --revision <revision_id>提交对应提交代码更改,这个命令把svn commit的工作也做掉了,直接提交到代码库。
  • arc todo <description> [option]可以快速给自己在phabricator上创建task,[option]用于把task CC给其他人.
  • arc tasks [options] 查看Maniphest的tasks。
  • arc amend --show 查看当前项目的differentials,arc amend --revision <revision_id> --show 查看指定revision_id的differential。

  Reference:

  Arcanist官方文档: http://www.phabricator.com/docs/phabricator/article/Arcanist_User_Guide.html

**代码审查:Phabricator命令行工具Arcanist的基本用法的更多相关文章

  1. windows下的命令行工具babun

    什么是babun babun是windows上的一个第三方shell,在这个shell上面你可以使用几乎所有linux,unix上面的命令,他几乎可以取代windows的shell.用官方的题目说就是 ...

  2. 『.NET Core CLI工具文档』(一).NET Core 命令行工具(CLI)

    说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:.NET Core Command Line Tools 翻译:.NET Core命令行工具 什么是 .NET Core ...

  3. 命令行工具aspnet_regiis.exe实现加密和解密web.config

    命令行工具aspnet_regiis.exe,是一个类似于DOS的命令工具,称之为命令解释器.使用命令行工具加密和解密web.config文件中的数据库连接字符串时,只需要简单的语法命令即可. 加密语 ...

  4. nodejs 编写(添加时间戳)命令行工具 timestamp

    Nodejs除了编写服务器端程序还可以编写命令行工具,如gulp.js就是Nodejs编写的. 接下来我们来实现一个添加时间戳的命令: $ timestamp action https://www.n ...

  5. 如何用Node编写命令行工具

    0. 命令行工具 当全局安装模块之后,我们可以在控制台下执行指定的命令来运行操作,如果npm一样.我把这样的模块称之为命令行工具模块(如理解有偏颇,欢迎指正) 1.用Node编写命令行工具 在Node ...

  6. Orchard中的命令行工具

    在Orchard中提供了一个命令行工具,我们可以使用这个命令行工具创建用户.创建博客.生成代码.配置网站.打包模块等.并且这个命令行工具是可以扩充的,只要我们在自己开发的模块中创建一个Command类 ...

  7. Linux 性能监控之命令行工具

    引言 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因.这个命令行工具列表提供了足够的 ...

  8. 命令行工具解析Crash文件,dSYM文件进行符号化

    备份   文/爱掏蜂窝的熊(简书作者)原文链接:http://www.jianshu.com/p/0b6f5148dab8著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 序 在日常开发 ...

  9. MySQL 命令行工具之 mysqldump 深入研究

    mysqldump 是MySQL的一个命令行工具,用于逻辑备份.可以将数据库和表的结构,以及表中的数据分别导出成:create database, create table, insert into的 ...

随机推荐

  1. Unity3D获取Andorid设备返回键,主页键等功能

    在Unity开发中捕捉Android的常用事件其实很简单 在新建的脚本文件中就加入: 比如: // 返回键 if ( Application.platform == RuntimePlatform.A ...

  2. 剑指Offer 从上往下打印二叉树(dfs)

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印.   思路: 用一个队列来辅助,先压入根节点,设置一个指针记录队列头位置,判断队头指针有没有孩子,有压入左右孩子,,,操作完一次,队头出 ...

  3. pro*c添加SQLCHECK后编译报错PLS-S-00201

    如果在pro*c中调用数据库了里的函数,就需要在proc的cfg配置文件中添加一行: SQLCHECK=SEMANTICS 但是添加之后又会出现PLS-S-00201错误,原因在与添加SQLCHECK ...

  4. 23 使用环境 UsageEnvironment——Live555源码阅读

    23 使用环境 UsageEnvironment——Live555源码阅读(三)UsageEnvironment 23 使用环境 UsageEnvironment——Live555源码阅读(三)Usa ...

  5. Database、User、Schema、Tables、Col、Row

    可以把Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个Schema中的床,Table(床)就被放入每个房间中 ...

  6. haproxy simple cfg

    global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy user haproxy group hap ...

  7. Node.js——Async

    一:流程控制 为了适应异步编程,减少回调的嵌套,我尝试了很多库.最终觉得还是async最靠谱. 地址:https://github.com/caolan/async Async的内容分为三部分: 流程 ...

  8. [转]Tomcat----Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

    对于使用IDE开发的程序员来讲,并不是所有人都对自己用来吃饭的工具了如指掌.常在阴沟跑,哪能不翻船.为此我把自己使用Tomcat/Eclipse的一些经验教训整理了一下,会陆续的贴出来,也许会帮到和我 ...

  9. Struts2学习笔记《一》

    (一)struts2中JSP页面数据与Action对应的三种方式 1.属性驱动,及页面中带有name属性的值传递过来action中,struts2会将值直接映射到getter.setter接收器中 此 ...

  10. linux下用cronolog分割apache日志

    linux下用cronolog分割apache日志,大神莫拍砖,菜鸟留一记录,小白请默默转载.连linux登陆和vi编辑都不会的,请默默关闭此页面.入正题 说明:淡绿色底的为linux命令,其他的为备 ...