Actively choosing a version control system is a rare decision; the vast majority of the time you have to use whatever the project leader (OSS) / company wants. If a project is on github I can't exactly choose to use svn.
This has led to me using some truly terrible version control systems, of which the worst was Cadence DesignSync. When using this system I wrote a rant detailing it (which is very offtopic for this thread but might be amusing):
- by default, a "checkout" contains symlinks to (non-writable) files, not the files themselves.
- this means that files can change under you. I suppose it saves a bit of disk space.
- want to edit a file? Mandatory locking!
- yes, that's right, mandatory locking is used instead of merges. No built in merging at all.
- In theory that avoids conflicts. In practice, what happens is: people take their own copy of the file, edit it, get the lock, write their edited version in.
- because it's hand-merged or unmerged, we've frequently lost changes and had to reapply them.
- towards the end of the project, finding out that the file you needed was locked by someone in a different timezone who'd gone home was getting really, really infuriating.
- to top it all, it's very, very slow.
This article from 2002 describes someone else having the same experience and building a "just use
Perforce" frontend: http://eetimes.com/electronics-news/4153780/Irritation-promp...