- Pros
- Great set of client-tools
- History is absolutely sacred
- Maintains a guaranteed accurate history
- No modification of history allowed
- Quick learning curve due to commonality with SVN commands and straight-forward functionality
- Runs cleanly under all operating systems
- Mercurial does not require repository maintenance.
- Cons
- N-way merges are accomplished by performing N-1 merges
- Not necessarily a con, but worth noting
- Sacred history may lend itself to a less-clean-looking history
- Apparently, doesn't play nicely with maven release plugin
- N-way merges are accomplished by performing N-1 merges
- Notes
- Kiln would allow each developer to choose their own DVCS (HG / Git)
- Performance has shown to be mostly comparable between DVCS systems
- Mercurial has provided rebase support since version 1.1
- Mercurial is implemented mostly in Python (with a small amount of C), with an extension API that allows third parties to enhance Mercurial via custom Python modules.
- Pros
- Allows N-way merges in one changeset
- Although this could lead to some confusion as to where certain changes came from.
- GitHub is pretty much the only real solution for opensource projects nowadays
- Ability to modify source history does allow for a "clean" history, although potentially inaccurate
- There is a //much// larger community surrounding Git due to its history with the Linux kernel and it's more recent marriage with GitHub
- Allows N-way merges in one changeset
- Cons
- Exposes the ability to modify source history
- Some people see this as a "pro".
- There is record of people blowing away months of work due to a bad command
- Lack of client tools when compared to HG
- Steep learning curve
- Lack of easy to use client tools
- Terminology even further removed from SVN than HG
- Linux heritage lends Windows compatibility to be less than ideal
- Official way to run under Windows is using cygwin
- Performance has shown to be more sluggish under Windows
- Git requires periodic maintenance of repositories (i.e. git-gc)
- Exposes the ability to modify source history
- Notes
- Kiln would allow each developer to choose their own DVCS (HG / Git)
- Performance has shown to be mostly comparable between DVCS systems
- Git was originally a large number of shell scripts and unix commands implemented in C. Over time, a common library that shared between commands has been developed, and many of the commands have been built into the main git executable.