Code Reviews with Phabricator
Jakub Vrána, WebExpo 2013
1 year full-time contributor and user
Code Reviews with Phabricator
Jakub Vrána, WebExpo 2013
1 year full-time contributor and user
Phabricator
Started as Diffcamp at Facebook
Open source
Users: Dropbox, Asana, Quora, Uber, …
Supports Git, Mercurial, SVN, plain diffs
For developers from developers
Performs at scale
Other tools: GitHub, Critique, …
Phabricator Applications
Differential: code reviews
Diffusion: browse repository
Maniphest: tasks and bugs
Herald: notifications
Owners, Calendar, Wiki, Blog, lots more
Conduit: API
Arcanist: command line interface
Differential: Code, Context
Mention two-side diff, syntax highlighting, hidden lines, code context.
Differential: Inline comments
Mention multiline inlines, Remarkup, object IDs.
Differential: Cross-references
Mention selecting text, double click.
Differential: Copies, Moves
Mention selecting text, double click.
Diffusion: Stable Links
Mention link rotting.
Diffusion: Blame Previous
Mention refactorings, stable line.
Maniphest: “Not Bad”
Mention related tasks, diffs, commits.
Herald: Packages
Mention packages and owners.
Calendar: Reviewer Away
Mention that information is available anywhere the user is mentioned.
Conduit: Method Call
Arcanist
arc feature: Start working on something
arc diff: Send code for review
arc land: Publish reviewed code
arc cover: Who should review my change
arc patch: Apply someone’s revision
Several other commands
Works on Linux, Mac, Windows
Mention that Arcanist uses Conduit.
Arcanist: Lint
Mention pre-commit hooks, style rules, wide variety of linters, simplicity to add own linter.
Arcanist: Unit Tests
Test plan
Mention running tests before diff (before land at Google), test speed, supported unit testers, code coverage.
Mention that test plan is sometimes better than unit test.
Customization
Configuration
Extending code
Differential fields
Remarkup rules
Events
Custom Arcanist commands
Conduit
Weaknesses
Commit discovery is delayed
Some features require manual setup
E.g. cross references
Hosted repositories should solve both
Culture
Response within a day
Don’t ask for unrelated changes
Express strength of your feelings
Who reviews the code
Who lands the code
How is the code tested
When is the code linted and tested
Pre-commit or post-commit review
Thanks