Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save brntbeer/aca89182723bd8e5a84e5dafd9835929 to your computer and use it in GitHub Desktop.
Save brntbeer/aca89182723bd8e5a84e5dafd9835929 to your computer and use it in GitHub Desktop.
github vs phabricator and mercurial

Feature Matrix

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 )

Differences between Phabricator and GitHub

  • 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 is post-commit by default, where the commits are already part of the history and simply tied to a branch when merged.

Differences between Mercurial and Git

  • 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.
@mukuljainx
Copy link

mukuljainx commented Mar 23, 2022

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.

@brntbeer
Copy link
Author

@mukuljainx this gist is quite old! But since it's creation GitHub has come out with a whole host of things like codeowners

@mukuljainx
Copy link

That's awesome, thanks @brntbeer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment