| ============================= |
| Code Reviews with Phabricator |
| ============================= |
| |
| .. contents:: |
| :local: |
| |
| If you prefer to use a web user interface for code reviews, |
| you can now submit your patches for Clang and LLVM at |
| `LLVM's Phabricator`_. |
| |
| Sign up |
| ------- |
| |
| There are two options to get an account on Phabricator. You can sign up |
| immediately with one of the supported OAuth account types if you're comfortable |
| with OAuth, but you can also email chandlerc@gmail.com to request an account to |
| be created manually without using OAuth. We're working to get support in |
| Phabricator to directly create new accounts, but currently this is a manual |
| process. |
| |
| Note that if you use your Subversion user name as Phabricator user name, |
| Phabricator will automatically connect your submits to your Phabricator user in |
| the `Code Repository Browser`_. |
| |
| |
| Requesting a review via the command line |
| ---------------------------------------- |
| |
| Phabricator has a tool called *Arcanist* to upload patches from |
| the command line. To get you set up, follow the |
| `Arcanist Quick Start`_ instructions. |
| |
| You can learn more about how to use arc to interact with |
| Phabricator in the `Arcanist User Guide`_. |
| |
| Requesting a review via the web interface |
| ----------------------------------------- |
| |
| The tool to create and review patches in Phabricator is called |
| *Differential*. |
| |
| Note that you can upload patches created through various diff tools, |
| including git and svn. To make reviews easier, please always include |
| **as much context as possible** with your diff! Don't worry, Phabricator |
| will automatically send a diff with a smaller context in the review |
| email, but having the full file in the web interface will help the |
| reviewer understand your code. |
| |
| To get a full diff, use one of the following commands (or just use Arcanist |
| to upload your patch): |
| |
| * ``git diff -U999999 other-branch`` |
| * ``svn diff --diff-cmd=diff -x -U999999`` |
| |
| To upload a new patch: |
| |
| * Click *Differential*. |
| * Click *Create Revision*. |
| * Paste the text diff or upload the patch file. |
| Note that TODO |
| * Leave the drop down on *Create a new Revision...* and click *Continue*. |
| * Enter a descriptive title and summary; add reviewers and mailing |
| lists that you want to be included in the review. If your patch is |
| for LLVM, cc llvm-commits; if your patch is for Clang, cc cfe-commits. |
| * Click *Save*. |
| |
| To submit an updated patch: |
| |
| * Click *Differential*. |
| * Click *Create Revision*. |
| * Paste the updated diff. |
| * Select the review you want to from the *Attach To* dropdown and click |
| *Continue*. |
| * Click *Save*. |
| |
| Reviewing code with Phabricator |
| ------------------------------- |
| |
| Phabricator allows you to add inline comments as well as overall comments |
| to a revision. To add an inline comment, select the lines of code you want |
| to comment on by clicking and dragging the line numbers in the diff pane. |
| |
| You can add overall comments or submit your comments at the bottom of the page. |
| |
| Phabricator has many useful features, for example allowing you to select |
| diffs between different versions of the patch as it was reviewed in the |
| *Revision Update History*. Most features are self descriptive - explore, and |
| if you have a question, drop by on #llvm in IRC to get help. |
| |
| Note that as e-mail is the system of reference for code reviews, and some |
| people prefer it over a web interface, we do not generate automated mail |
| when a review changes state, for example by clicking "Accept Revision" in |
| the web interface. Thus, please type LGTM into the comment box to accept |
| a change from Phabricator. |
| |
| Status |
| ------ |
| |
| Currently, we're testing Phabricator for use with Clang/LLVM. Please let us |
| know whether you like it and what could be improved! |
| |
| .. _LLVM's Phabricator: http://llvm-reviews.chandlerc.com |
| .. _Code Repository Browser: http://llvm-reviews.chandlerc.com/diffusion/ |
| .. _Arcanist Quick Start: http://www.phabricator.com/docs/phabricator/article/Arcanist_Quick_Start.html |
| .. _Arcanist User Guide: http://www.phabricator.com/docs/phabricator/article/Arcanist_User_Guide.html |