When comparing Subversion vs Mercurial, the Slant community recommends Mercurial for most people. In the question“What are the best version control systems?” Mercurial is ranked 2nd while Subversion is ranked 8th. The most important reason people chose Mercurial is:
Mercurial is a more intuitive option than many of its competitors. The [documentation](https://mercurial.selenic.com/guide) is well organized and easy for beginners to read & understand.
Ranked in these QuestionsQuestion Ranking
Pro Clear and simple operation
It has linear history, central repository and management. Lacks too complex features, almost every developer is familiar with it, so everyone knows what to expect and how to work with it.
Pro Binary files handled efficiently
Pro File locking
Pro Incremental revision numbers
Gives you a better indication on how old a specific revision is without needing any more details.
Pro Easy to understand externals
E.g. more easy to understand than Git's submodules.
Pro Free-form versioned metadata
Pro Easy to use
Mercurial is a more intuitive option than many of its competitors. The documentation is well organized and easy for beginners to read & understand.
Pro Free and open source
Mercurial is open source and free to use.
Doesn't require access to a central repository, because each checkout is a full repository by itself.
Mercurial is designed to make performing operations (such as commits, clones etc.) fast.
Pro Good documentation
Mercurial documentation covers everything from revision control system basics to mercurial specific features in a short and clear way.
Users can activate plugins to provide additional features.
Pro Same features Git provides, but much easier to use and to understand
The command-line interface is more intuitive, requiring much less memorization and exotic options/piping to achieve the same thing you would in git.
Pro Native Windows support
Native Windows support. No trace of cygwin or other dirty hacks typically found in competitors.
Pro Fully python based
Pro Doesn't delete history
Mercurial makes it pretty darn hard to delete history by mistake. In Git, if you mistakenly commit to HEAD and switch to a different branch, your commit is toast. Yes, you can dig through the reflog but most users don't even know of its existence and will wish they didn't once they find out.
Pro Actively contributed to by Facebook
Mercurial is actively contributed to by the developers at Facebook as they use it for their massive source repository.
Con Branches are hell. Conflicts are hell
Svn is hard to use on multi-topics workflows. Branches exist but are often not used because of the fear of the merge hell.
Also, conflicts are a big deal and happen on the server; it feels like you only have one try and no way to abort/retry your conflict.
Con Underlying model is totally flawed
Need to code in a rural area? Away on a retreat away from a good network connection? On a plane?
Con Does not forgive errors
Forgot to commit a file, you need to add a new commit.
Con Flawed roll-back
It is nearly impossible to revert a big repository to an older version.
In GIT, on the other hand, this works very well.
Con Lost the widely adopted race to git
Sharing code and projects in an open source world is a must and trying to working with multiple Source Code Control systems does not help the ecosystem.
Con Setup paths are hardcoded
Con Can't delete named branches
You pretty much have to use tags instead.
Con Feels limited from a Git user's perspective
E.g. it does not offer the ability to rebase/force-push your own feature branch.