I rank distributed version control as one of the most significant advancements in software development in the past decade. Why?<p>1. Ease of branching and merging.<p>Branch as often as you want, merge as often as you want, from as many different branches as necessary. The importance of isolating stable releases, bug fixes, experimental features, etc can't be overstated and DVCS makes doing so very easy.<p>2. Offline use.<p>All of the popular DCVS provide full functionality within each local repository/branch/whatever. Being disconnected won't keep you from branching or merging, which gets back to #1. It's also very easy to share branches between two laptops for instant mobile collaboration.<p>3. Ease of sharing changes.<p>Most DVCS support easy sending of local changes to a project maintainer. This really does make it much more likely that a user will grab a copy of the source, make some improvements, and submit those back to the community. No more messing with diff formats, finding the maintainer's email address, etc.<p>--<p>Of all the DVCS, I recommend mercurial (hg) for the best blend of ease of use, performance, portability, etc. Darcs is my real favorite, but currently has issues with conflicts. Bazaar-NG (bzr) looks promising as well. I avoid git like the plague... far too complex and unwieldy for my taste.
I'd recommend darcs or git. Check out Linus' talk on git, he basically spends 70 minutes talking about why a distributed VCS is vastly superior to any centralized system.<p><a href="http://www.youtube.com/watch?v=4XpnKHJAok8" rel="nofollow">http://www.youtube.com/watch?v=4XpnKHJAok8</a>
Sounds good, but I'll take a wait and see attitude, let the dust settle, and see what has emerged. The benefits to me of using one aren't enough to justify being on the "cutting edge", so I'll just stick to subversion for now.
I'm working with a client whose chosen Mercurial. I like being able to group relevant changes into one commit, comment it and then move on to the next commit, without interfering with the trunk.<p>Mercurial leaves much to be desired in the efficiency of it's copies -- it's file backed, not db backed, using copy on write for copies; whereas Subversion delta encodes everything. While cheap storage is not such a big deal for managing source code, it does matter when using version control for art assets.
I use mercurial and am very happy with it. All you need to use it is a python implementation.<p>I haven't checked out the other distributed revision control systems.
The MQ extension for Mercurial lets you manipulate and version control the _patches_ as well as the actual code. It's kinda weird -- "higher-order version control".