2011-05-23 16:42:58 +02:00
|
|
|
@title Arcanist User Guide
|
|
|
|
@group userguide
|
|
|
|
|
2012-03-22 20:06:46 +01:00
|
|
|
Guide to Arcanist, a command-line interface to Phabricator.
|
2011-05-23 16:42:58 +02:00
|
|
|
|
2012-03-22 20:06:46 +01:00
|
|
|
Arcanists provides command-line access to many Phabricator tools (like
|
|
|
|
Differential, Files, and Paste), integrates with static analysis ("lint") and
|
|
|
|
unit tests, and manages common workflows like getting changes into Differential
|
|
|
|
for review.
|
2011-05-23 16:42:58 +02:00
|
|
|
|
|
|
|
A detailed command reference is available by running ##arc help##. This
|
|
|
|
document provides a high level overview of common workflows.
|
|
|
|
|
|
|
|
Arcanist has technical, contributor-focused documentation here:
|
|
|
|
<http://www.phabricator.com/docs/arcanist/>
|
|
|
|
|
|
|
|
= Overview =
|
|
|
|
|
|
|
|
Arcanist is a wrapper script that sits on top of other tools (e.g.,
|
2011-08-26 02:42:16 +02:00
|
|
|
Differential, linters, unit test frameworks, git, Mercurial, and SVN) and
|
|
|
|
provides a simple command-line API to manage code review and some related
|
|
|
|
revision control operations.
|
2011-05-23 16:42:58 +02:00
|
|
|
|
|
|
|
Arcanist allows you to do things like:
|
|
|
|
|
|
|
|
- get detailed help about available commands with ##arc help##
|
|
|
|
- send your code to Differential for review with ##arc diff##
|
|
|
|
- show pending revision information with ##arc list##
|
|
|
|
- find likely reviewers for a change with ##arc cover##
|
|
|
|
- apply changes in a revision to the working copy with ##arc patch##
|
|
|
|
- download a patch from Differential with ##arc export##
|
|
|
|
- update Git commit messages after review with ##arc amend##
|
|
|
|
- commit SVN changes with ##arc commit##
|
2012-03-22 20:06:46 +01:00
|
|
|
- push Git changes with ##arc land##
|
2011-06-29 22:26:33 +02:00
|
|
|
- view enhanced information about Git branches with ##arc branch##
|
2011-05-23 16:42:58 +02:00
|
|
|
|
|
|
|
Once you've configured lint and unit test integration, you can also:
|
|
|
|
|
|
|
|
- check your code for syntax and style errors with ##arc lint##
|
|
|
|
- run unit tests that cover your changes with ##arc unit##
|
|
|
|
|
2012-03-22 20:06:46 +01:00
|
|
|
Arcanist integrates with other tools:
|
|
|
|
|
|
|
|
- upload and download files with ##arc upload## and ##arc download##
|
|
|
|
- create and view pastes with ##arc paste##
|
|
|
|
|
2011-05-23 16:42:58 +02:00
|
|
|
Arcanist has some advanced features as well, you can:
|
|
|
|
|
|
|
|
- execute Conduit method calls with ##arc call-conduit##
|
|
|
|
- create or update libphutil libraries with ##arc liberate##
|
|
|
|
- activate tab completion with ##arc shell-complete##
|
|
|
|
- install arc as a pre-commit hook with ##arc svn-hook-pre-commit## or
|
|
|
|
##arc git-hook-pre-receive##
|
2011-06-29 22:26:33 +02:00
|
|
|
- ...or extend Arcanist and add new commands.
|
2011-05-23 16:42:58 +02:00
|
|
|
|
|
|
|
Except where otherwise noted, these workflows are generally agnostic to the
|
2011-08-26 02:42:16 +02:00
|
|
|
underlying version control system and will work properly in git, Mercurial, or
|
|
|
|
SVN repositories.
|
2011-05-23 16:42:58 +02:00
|
|
|
|
|
|
|
= Installing Arcanist =
|
|
|
|
|
2012-03-22 20:06:46 +01:00
|
|
|
Arcanist is meant to be installed on your local machine or development server --
|
|
|
|
whatever machine you're editing code on. It runs on Linux, Mac OS X, and
|
|
|
|
Windows (see @{article:Arcanist User Guide: Windows}).
|
|
|
|
|
|
|
|
Arcanist is written in PHP, so you need to install the PHP CLI first if you
|
|
|
|
don't already have it. Arcanist should run on PHP 5.2 and newer. If you don't
|
|
|
|
have PHP installed, you can download it from <http://www.php.net/>.
|
|
|
|
|
|
|
|
To install Arcanist, pick an install directory and clone the code from GitHub:
|
|
|
|
|
|
|
|
some_install_path/ $ git clone git://github.com/facebook/libphutil.git
|
|
|
|
some_install_path/ $ git clone git://github.com/facebook/arcanist.git
|
|
|
|
|
|
|
|
This should leave you with a directory structure like this
|
|
|
|
|
|
|
|
some_install_path/ # Wherever you chose to install it.
|
|
|
|
arcanist/ # Arcanist-specific code and libraries.
|
|
|
|
libphutil/ # A shared library Arcanist depends upon.
|
|
|
|
|
|
|
|
Now add ##some_install_path/arcanist/bin/## to your PATH environment variable.
|
|
|
|
When you type "arc", you should see something like this:
|
|
|
|
|
|
|
|
Usage Exception: No command provided. Try 'arc help'.
|
|
|
|
|
|
|
|
If you get that far, you've done things correctly. If you get an error or have
|
|
|
|
trouble getting this far, see these detailed guides:
|
|
|
|
|
|
|
|
- On Windows: @{Arcanist User Guide: Windows}
|
|
|
|
- On Mac OS X: @{Arcanist User Guide: Mac OS X}
|
|
|
|
|
|
|
|
The code changes quickly, so remember to update regularly, by running
|
|
|
|
`git pull` on the two directories:
|
|
|
|
|
|
|
|
some_install_path/arcanist/ $ git pull
|
|
|
|
some_install_path/libphutil/ $ git pull
|
|
|
|
|
|
|
|
== Installing Arcanist for a Team ==
|
2011-05-23 16:42:58 +02:00
|
|
|
|
2012-03-22 20:06:46 +01:00
|
|
|
Arcanist changes quickly and doesn't currently have an auto-update mechanism,
|
|
|
|
so it can be something of a headache to get it installed and keep people up to
|
|
|
|
date. Here are some approaches you might be able to use:
|
2011-05-23 16:42:58 +02:00
|
|
|
|
2012-03-22 20:06:46 +01:00
|
|
|
- Facebook does most development on development servers, which have a standard
|
|
|
|
environment and NFS mounts. Arcanist and libphutil themselves live on an
|
|
|
|
NFS mount, and the default `.bashrc` adds them to the PATH. Updating the
|
|
|
|
mount source updates everyone's versions, and new employees have a working
|
|
|
|
`arc` when they first log in.
|
|
|
|
- Another common approach is to write an install script as an action into
|
|
|
|
existing build scripts, so users can run `make install-arc` or
|
|
|
|
`ant install-arc` or similar.
|
|
|
|
- In general, if this sucks and is causing you pain, let us know (see
|
|
|
|
@{article:Give Feedback! Get Support!}). We're planning to improve this at
|
|
|
|
some point, but it's somewhat complicated to get right. While it can take a
|
|
|
|
little time to set up, we aren't getting feedback that it's a persistent
|
|
|
|
pain point, so it hasn't been a priority.
|
2011-05-23 16:42:58 +02:00
|
|
|
|
|
|
|
== Installing Tab Completion ==
|
|
|
|
|
|
|
|
If you use ##bash##, you can set up tab completion by adding something like this
|
|
|
|
to your ##.bashrc##, ##.profile## or similar:
|
|
|
|
|
|
|
|
source /path/to/arcanist/resources/shell/bash-completion
|
|
|
|
|
2012-04-07 19:39:51 +02:00
|
|
|
== Next Steps ==
|
2011-05-23 16:42:58 +02:00
|
|
|
|
2012-04-07 19:39:51 +02:00
|
|
|
Continue by:
|
2011-05-23 16:42:58 +02:00
|
|
|
|
2012-04-07 19:39:51 +02:00
|
|
|
- learning how to use `arc` to send changes for review with
|
|
|
|
{@article:Arcanist User Guide: arc diff}.
|