I am trying to make sense of how Phabricator is used and create a mental model for the workflow. I will list my estimations from what I’ve read from the docs and the review pages of various commits and kindly ask anyone to correct them.
Differentials are the units which Phabricator works on. They are basically patches. They must have single author(?).
Reviews are done on diffs before merging them, using comments.
To make a change to a diff a new diff should be created (?). How does the diff against a diff work?
After the review process, at what point a diff gets into the main branch?
I am guessing the reason for this kind of commit isolation is to better track changes, have room for discussion and to address ownership of code.
You don’t create a diff against a diff, you upload a brand new diff that replaces the previous one (Phabricator UI has the ability to display the diff against the previous diff afterward).
The arc (Arcanist) tool abstract this away, running arc diff HEAD~ will amend the current commit in your local repo and upload a revision.
When a patch gets approved, someone has to push it to GitHub, either the author if they have commit access, or a reviewer (the author should ask for it in the review stating that they don’t have commit access).