@title Differential User Guide
@group userguide

Guide to the Differential (pre-push code review) tool and workflow.

= Overview =

Phabricator supports two code review workflows, "review" (pre-push) and
"audit" (post-push). To understand the differences between the two, see
@{article:User Guide: Review vs Audit}.

This document summarizes the pre-push "review" workflow implemented by the tool
//Differential//.

= How Review Works =

Code review in Phabricator is a lightweight, asynchronous web-based process. If
you are familiar with GitHub, it is similar to how pull requests work:

  - An author prepares a change to a codebase, then sends it for review. They
    specify who they want to review it (additional users may be notified as
    well, see below). The change itself is called a "Differential Revision".
  - The reviewers receive an email asking them to review the change.
  - The reviewers inspect the change and either discuss it, approve it, or
    request changes (e.g., if they identify problems or bugs).
  - In response to feedback, the author may update the change (e.g., fixing
    the bugs or addressing the problems).
  - Once everything is satisfied, some reviewer accepts the change and the
    author pushes it to the upstream.

The Differential home screen shows two sets of revisions:

  - **Action Required** is revisions you are the author of or a reviewer for,
    which you need to review, revise, or push.
  - **Waiting on Others** is revisions you are the author of or a reviewer for,
    which someone else needs to review, revise, or push.

= Creating Revisions =

The preferred way to create revisions in Differential is with `arc`
(see @{article:Arcanist User Guide}). You can also create revisions from the
web interface, by navigating to Differential, pressing the "Create Revision"
button, and pasting a diff in.

= Herald Rules =

If you're interested in keeping track of changes to certain parts of a codebase
(e.g., maybe changes to a feature or changes in a certain language, or there's
just some intern who you don't trust) you can write a Herald rule to
automatically CC you on any revisions which match rules (like content, author,
files affected, etc.)

= Differential Tips =

  - You can leave inline comments by clicking the line numbers in the diff.
  - You can leave a comment across multiple lines by dragging across the line
    numbers.
  - Inline comments are initially saved as drafts. They are not submitted until
    you submit a comment at the bottom of the page.
  - Press "?" to view keyboard shortcuts.

= Next Steps =

  - Read the FAQ at @{article:Differential User Guide: FAQ}; or
  - learn about handling large changesets at
    @{article:Differential User Guide: Large Changes}; or
  - learn about test plans at @{article:Differential User Guide: Test Plans}; or
  - learn more about Herald at @{article:Herald User Guide}; or
  - give us feedback at @{article:Give Feedback! Get Support!}.
