We have a code review process that works in Gerrit, and we need to have a code review process with the same spirit that works in Phabricator.
Let's identify the points that Phabricator can cover already today with a proper configuration, and let's create subtasks to discuss the points that seem to be currently unsupported.
The current process, abstracted (edits welcome!)
- Project ownership
- Individual owners are members of groups. Group "foo" is the owner of Git repository "foo".
- Meta-groups can join groups in order to simplify membership management. For instance, the meta-group "fundraising" is member of each group for each of their repositories.
- yep, in owners via teams (which can be restricted)
- Only the owners of a group (and the admins) can accept new owners for that group. (The creator of a repository is automatically its owner?)
- they're called ACL policies in Differential/Phabricator
- Inheritance can can be set up. For example, permissions for mediawiki/extensions inherit from mediawiki, and permissions for mediawiki/extensions/GuidedTour inherit from mediawiki/extensions.
- Code review
- Owners are the only ones that can accept or reject revisions (+2 / -2). No revision gets through without the acceptance of one member of the owners group related to that repository.
- Yep, the owners are the ones with push access to the repo (like in Gerrit)
- Self-merges are discouraged but they are technically possible.
- Yep, and we even have Audit to catch them/review them if the repository owners want to
- All users can comment and recommend or discourage the acceptance of a revision (+1 / -1). Non-owners have no means to accept a revision.
- Same as Gerrit
- Currently an update on a revision resets the recommendations collected except for -2 votes (unless it is a trivial rebase (same diff, different parent) or change only in the summary (ie: no code change)).
- configurable with differential.sticky-accept
- A Jenkins bot reviews all revisions; it will reject them if they don't pass the criteria.
- Jenkins is working with Differential now via adding tags such as meta-ci-jessie and meta-build-package . Same behavior as Gerrit.
- A localization bot gets their revisions automatically accepted in all repositories.
- Owners are the only ones that can accept or reject revisions (+2 / -2). No revision gets through without the acceptance of one member of the owners group related to that repository.