In my work world, I use clearcase for doing version control. At NYSE, we used a flexible but complex model of several vobs for shared pieces, major branches for specific versions (.e.g. product.11), minor branches (product.11.03) and each developer creating one or more further branches as needed (product.11.03.4538). Lots of merging going on. It took a while to get used to but it works well.

At Credit Suisse, we have a much simpler model for clearcase where everyone creates a local branch off the main view and when they are ready just commits that. It freaks me out but it works.

On my personal projects, I’ve been evolving over the years. Many years ago, I
used RCS.
I thought CVS was a huge improvement over RCS. Then Subversion held sway over me up until
about a year ago when I started experimenting with more distributed version
control systems.

When I wanted to work with someone else, we both had laptops, were frequently
working without a network connection (commuting by train) and we were doing a
lot of experimental stuff. It made sense to use distributed version control. I
started off with Darcs. The concept is great;
everything works as expected. I had repositories under Linux, Windows, and
MacOS. Tres cool. Darcs got a little annoying with constantly prompting me if
I really wanted to included this. Sure, I used “-a” or answered “a” a lot
(accept all changes), but it was frustrating.

Recently, I decided to try Mercurial and I’m totally impressed. I’m not to far into my evaluation but the first few things work like I expect.

  1. Creating a new repository and importing all the changes from darcs worked like a charm
  2. Creating repositories on several machines via ssh works well.
  3. Simple changes and updates is intuitive
  4. Performance is great

More info

Here are some other articles