I would suggest that it&#39;s best to move from CVS to Subversion as a first step, it&#39;s intended as a (much better) drop-in replacement and it works! Subversion also has some of widest integration into development tools. You then can experiment freely with the various distributed systems.<br>
<br>Distributed version control is prized for four reasons:<br>* Merging and branching is *much* easier.<br>
* You can commit while your laptop is offline.<br>
* You can commit your changes without needing write permissions.<br>* Checkouts create a complete copy of the repository, so backups are easy to find.<br><br>Bazaar and git can both talk directly to a Subversion server, allowing you to install the clients and fool around until you&#39;re comfortable (perhaps Mercurial can as well? I&#39;m not going to learn it until I have to).<br>
<br>Generally speaking:<br><br>Bazaar is a very good choice - the command line is nearly identical to Subversion, it&#39;s the most Windows-friendly (has TortoiseBzr built in), can checkout and commit to a Subversion server, and has a very well-written user&#39;s guide. It is probably a *bad* choice for very large projects as performance becomes an issue. Canonical/Ubuntu is the driving force and it has a large-scale deployment in the form of Launchpad.<br>
<br>Mercurial is very stable, well respected, good command line. Performance is comparable to git and it&#39;s cross-platform. Will be learning it soon as Python is switching to it. It&#39;s not under as heavy development as Bazaar or Git, mainly because it&#39;s more mature.<br>
<br>Git is the new hotness. It has the best performance, and a very large user base. It has awful documentation, an idiosyncratic command-line, and is Windows-unfriendly (parts of it are written in shell script!). It also enables some extremely powerful workflows, and is the best choice for very large projects. Lots of open source projects use it, including the Linux kernel, KDE, and GNOME.<br>