I (and my team) switched from CVS to SVN about three years ago. Now I’m considering switching to either git or Mercurial. Anybody just starting to use SVN now is well behind the curve.
The cool thing about a distributed code control system is that it has all the capabilities of a centralized system, PLUS the ability to do commits and branches and history without talking to the server. Sure, projects like the Linux kernel depend on it since they’re inherently decentralized, but even centralized projects can benefit from being able to work without contacting the server.
Of course, I’m strongly in the “commit each conceptual change” school of thought, rather than the “commit each day’s work” school of thought. It’s important to me to see the steps along the way, and to be able to undo those steps individually. I use the commit history constantly, as well as the annotate/blame facility.
Also, Subversion’s merge capabilities are painful to work with, while git and mercurial are designed to make merging easy. It’s great that Subversion made branching easy, but it’s nearly useless when merging a branch back to the trunk is such a pain. And even reverting a change is more painful in Subversion than it really should be.
Jeff, you may be interested in these links:
A guy who’d earlier explained why a href="http://ww2.samhart.com/node/47"all distributed version control systems suck/a switches from Subversion to Mercurial: http://ww2.samhart.com/node/49
Happenings in the version control system world (cvs, svn, mercurial/hg, bzr, git, as of March 1 2008): http://blogs.gnome.org/newren/2008/03/01/happenings-in-the-vcs-world/