Feature | GitHub | Phabricator | Notes |
## Code | |||
UI for adding/removing files | X | - | |
UI for editing files & committing | X | - | |
Preview README markdown files | X | X | |
Image previews | X | X | |
Browse or download file tree for each Git tag | X | - | |
Add release notes to Git tags | X | - | |
Attach files (such as tarballs) to Git tags | X | - | |
UI to create branches | X | - | |
Branch comparison tool | X | GitHub does global branch file diffs in one page as well as commits, Phabricator only lists commits and has a per file page to see the visual diff | |
Fork to personal repo | X | - | |
Organize repos into groups | X | - | In GitHub you can organize repos with Organizations and Topics. |
Download repo's files at any point in history (like git archive) | X | - | |
Visual Git blame | X | X | Phabricator only shows the commit hash; GitHub shows author and commit summary |
Download RAW file | X | X | |
Fine grained access control | X | X | |
Per-project code search | X | Phabricator only offers search by commit message and file names | |
Global code search | X | - | |
Repo activity charts | X | - | |
## Issues | |||
Milestones/deadlines | X | X | Phabricator can define milestones using tags, and has a Countdown plugin for date-based deadlines |
Freeform tags | X | - | Phabricator supports this through custom fields, controlled by the sysadmin; or project tags |
Subscribe to issues | X | X | |
Assign issue to a Git project | X | X | Phabricator assigns tasks to tags, so each Git project needs a tag (though tags do not necessarily map to repositories) |
Reassign issues between projects | X | X | Phabricator doesn't have the concept of product per bug, just project tags; each task can have multiple tags |
Search issues in all modules | X | X | |
Reply using email | X | X | |
Dependencies between issues | - | X | |
Private/confidential issues | (X) | X | The feature is available on github.com and will be available in GitHub Enterprise soonish. |
Refer to users inline in comments | X | X | |
Merge duplicate issues | - | X | |
Custom issue creation forms | - | X | Phabricator allows creating ad hoc forms for different type of tasks |
Add/remove custom fields | - | X | |
Attach files to comments | X | X | |
Inline attachment previews | X | X | |
Export issues in JSON for local processing or migration | X | X | |
Suggest existing issues | X | - | |
## Code review | |||
Personal fork and pull request | X | - | |
Upload diff file | - | X | |
Per line comments | X | X | |
Global diff view | X | X | |
Autoclose on push through commit log | X | X | |
Post-commit audit | X | X | Phabricator also allows assigning auditing/post-commit reviews to users |
## Tooling | |||
REST API | X | X | |
## Other features | |||
Built-in support for SSO | X | - | Phabricator has [no built-in support for SSO](https://discourse.phabricator-community.org/t/does-phabricator-support-logging-in-via-sso-using-saml-2-0/355). |
Project pages | X | - | |
Personal contributor overview pages | X | - | With Phab it's something you need to configure and set up: https://phacility.com/phabricator/dashboards/ |
( based on Gnome's comparison )
- Phabricator plugin for Jenkins hasn't been updated for almost 2 years according to this community post.
- Harbormaster is the CI tool in Phabricator but their own user guide calls out that "Harbormaster is not a mature application." along with a list of limitations. Haskell has also reported Harbormaster breaking.
- Phabricator uses a
pre-commit
workflow, where the reviews are done before the commit is pulled into the repo. Basically, they stay as change sets until approved. GitHub ispost-commit
by default, where the commits are already part of the history and simply tied to a branch when merged.
- Mercurial is a distributed version control system very similar to Git.
- While Mercurial may be easier at first because it offers more low-level commands, users must edit the mercurial config file to activate the advanced features they like.
- Mercurial's UX kind of similar to SVN, Git's UX is completely different which causes a steeper learning curve.
Phabricator automatically assigns Group Reviewers to a PR, I don't know there must be a config of some sort probably using file path, do we have something similar in Github?
Anyone can review the PR from Group Reviewers and unblock it.