Is Your Change Appropriate?

The change must be stable enough to come with a high confidence that it's not going to introduce bugs. For example, it should be simple, obvious, or have some solid stable history of running in production.

The change must not break anything that anyone else might care about, unless someone from each of the participating groups agrees the breakage from the change is worth it. Note that a significant performance regression constitutes "breakage" here too.

The change must be useful to at least one participating group. And, the change must at least be potentially useful to others (not necessarily participants).

Get Setup

If you've been given push access, you will need arcanist (the 'arc' command) to propose your changes. The short version of getting that is:

git clone git://
git clone git://

You then need to add arc to your PATH. You can either symlink it into an existing PATH directory:

cd arcanist/bin/
ln -sv arc <a_dir_already_in_your_path>

Alternatively you can add the arcanist/bin dir to your path instead:

export PATH="$PATH:<full_arcanist_bin_path>"

You will also need to ensure that you have php5-curl installed.

Next, go to your checked out WebScaleSQL repo and install the certificate:

cd <webscalesql_repo_path>
arc install-certificate

You'll be given instructions to get and paste the token to link this installation to your account.

Proposing a Change

To propose a change, commit it in a single git commit, with a fully completed message. For example:

My first commit

Feature: New Shiny Thing

A great new feature.  It's useful because of important stuff.

You use it by doing things.

Test Plan:
Ran mtr, and all tests passed.

Also tested important stuff, and that worked too.

Reviewers: afriend, anotherfriend

CC: interestedfriend

You can also use an earlier commit as a commit message template. These fields in the commit message are important and required for Phabricator.

Once committed, run arc diff to submit the commit to Phabricator:

arc diff --verbatim

If you want to make any subsequent changes to the diff, perhaps because of review feedback, update the git commit using the --amend flag. Then send the update to Phabricator using arc diff again:

arc diff --verbatim -m "This message explains my update"

Once a diff is approved, you can update your local diff with the review result in Phabricator:

arc amend

You should then see that your most recent commit message includes the Reviewed By: line. At this point, you can can push the diff to GitHub via git as usual.

Applying a patch

To pull a diff from Phabricator down into your git repo, use arc patch with the diff number. (If this was based on another tree, it will prompt you accordingly.)

arc patch D13803