Phabricator/Arcanist

Arcanist is a command line tool for Phabricator.

Installation
Arcanist needs PHP bcmath and curl extensions to be installed. Installation on ubuntu can be done easily using dpkg, package "arcanist" is available in official ubuntu repo.

Certificate for wmf labs
First, tell PHP CURL module to accept Wikimedia Labs Certification Authority.

Take :

-BEGIN CERTIFICATE- MIIDJTCCAo6gAwIBAgIJAJeM1RLuhUwDMA0GCSqGSIb3DQEBBQUAMGsxCzAJBgNV BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp c2NvMR0wGwYDVQQKExRXaWtpbWVkaWEgRm91bmRhdGlvbjEQMA4GA1UEAxMHTGFi cyBDQTAeFw0xMTExMTUwMDQwMzBaFw0yMTExMTIwMDQwMzBaMGsxCzAJBgNVBAYT AlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2Nv MR0wGwYDVQQKExRXaWtpbWVkaWEgRm91bmRhdGlvbjEQMA4GA1UEAxMHTGFicyBD QTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA2Im3vHD07ouobJkdkT/frHZm 4+WNznGt8jyBEdg8yznT37liYv58E+BPyo+DI38vJ5km2Ju7ys0TKT4xm4cb1BKe CExsGW6QrmM+jW7MED/fUpKZ79axNqnMQfvjwyJEvMsrzUnK2L/uhkN4vY9h40Ye Pu0m6GR/B+xyxNawSZkCAwEAAaOB0DCBzTAdBgNVHQ4EFgQU9xjOuTGdEcr5or5g qeXq/fjqSJ8wgZ0GA1UdIwSBlTCBkoAU9xjOuTGdEcr5or5gqeXq/fjqSJ+hb6Rt MGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T YW4gRnJhbmNpc2NvMR0wGwYDVQQKExRXaWtpbWVkaWEgRm91bmRhdGlvbjEQMA4G A1UEAxMHTGFicyBDQYIJAJeM1RLuhUwDMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcN AQEFBQADgYEAH+mhiNqZihXVFeTsk4NMLwqKrNonda3f8isrOj+yjeUKwvzEh1mn 0H6UbG85iR4QbmmeXoAZcSjlj3mn6ro/6h6f1pxTbZpKXqYJk+WSpyeZv7cS1Xb+ 94gswhDU+tyNC3qyc4aXEe+gAK5E3hyXIL5uYEjYQOLlYDmFBtRprQU= -END CERTIFICATE-

Install this certificate somewhere in your filesystem, for example

Edit your  file to include line:

You might also might check if your curl comes with a pre-configured list of certificate authorities it accepts and just add Wikimedia Labs certificate to that list.

Installing using git
You can install the Arcanist using Git.

Pick up some installation directory (for example ).

You should get two subdirectories in the  directory:   and

Now you should add  directory to your PATH - typically by editing   or   in your home directory.

After this the following command:

Which should respond with something like:

Set key 'default' = "https://phabricator.wmflabs.org/" in global config (was null)

Then you should install your personal Phabricator key.

Arc will prompt you to login to Phabricator via the web browser and pick up the key from the specified location:

Installing certificate for 'https://phabricator.wmflabs.org/api/'... Trying to connect to server... Connection OK!

Login to phabricator
Open this page in your browser and login to Phabricator if necessary:

https://phabricator.wmflabs.org/conduit/token/

Then paste the token on that page below.

Paste token from that page:

When clicking a link the following webpage is presented:

Certificate Install Token Copy and paste this token into the prompt given to you by "arc install-certificate":

xasdase34531asdhccasdsddadxtluyx5r5nqmu6xj5gjwxagzrej

arc will then complete the install process for you.

After the token is pasted into the arc window it should say:

Downloading authentication certificate... Installing certificate for 'yourusername'... Writing ~/.arcrc... SUCCESS! Certificate installed.

Basics
Arcanist is a tool that controls "differential" in phabricator. That is using similar workflow as gerrit. You basically make your changes, push them to differential (using arc diff) and someone needs to approve them and land them.

Diff
arc diff will submit your changes to review, example workflow:

git commit -a arc diff
 * 1) changes

Landing
Once the change was approved, you can land it, given that you have push access to repository:

arc patch  # example T2
 * 1) First you get the change

This will get a diff from differential and merge it on remote (merge is done locally, then it's immediately pushed)

Example
Now you can clone experimental respository using Git:

You can now go to the repository and try fetching some code:

The system will ask you:

This diff is for the 'E3Experiments' project but the working copy belongs to the '' project. Still try to apply it? [Y/n] y

Answer 'Y' and Arcanist should download the change:

Created and checked out branch arcpatch-D3. Downloading binary data... Downloading binary data... Downloading binary data... Downloading binary data... OKAY Successfully committed patch.

And you can see the patch in your local repository: master     e40fce0 [origin/master] Rename events.js -> communityClicks.js
 * arcpatch-D3 be7cfd9 Merge branch 'master' of ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/E3Experiments into munaf/pef2

Now it's time to explore  and the User's Guide