Phabricator/Differential

Differential is the code review tool in Phabricator. As per discussions with the technical community the WMF Release Engineering Team is driving the migration to Differential from Gerrit. See the #Gerrit-Migration Phabricator workboard and project to follow the progress.

Install Arcanist
To submit patches/changes ("Differentials"), install Arcanist, the command line tool that interfaces with Differential.

Background reading

 * 1) Read these recommended user guides from the upstream documentation on the two main parts of Differential code review:
 * 2) Differential User Guide
 * 3) Arcanist User Guide
 * 4) Read these recommended guides from upstream documentation on how code review happens and why:
 * 5) Writing Reviewable Code
 * 6) Differential Test PlansBonus points: Read this blog post from the lead developer of Phabricator about how and why Differential does code-review.

Done
Now, go contribute code!

How can I do this thing I did in Gerrit?
Firstly, not all actions that Gerrit provides will be available in Differential. This is by design. Not all code-review tools act exactly the same and design decisions are made to make the code-review tool internally consistent. Thus, please first try to understand how Differential and Arcanist are meant to be used (by reading the above links and trying things out) before asking for feature parity with Gerrit.

Take over another author's change
There is the "Commandeer Revision" action on every open diff. This will, as the name suggests, allow you to take over a change. Do this when, for example, the original author is unresponsive but you want to move the change forward.

Amend another author's change
Instead of in Gerrit:

git-review -d 12345 # fix the issue (typo, etc) git amend -a git-review # CR+2/merge

In Differential you do (still 3 commands, minus whatever fixes you make): # "accept" D12345 in the web interface (equiv of CR+2) then: arc patch D12345 # this applies D12345's change to your checkout of the repo # make minor change to fix typo or rebase and fix minor conflict git commit --amend -a arc land