What is the difference between all the different types of version control?

We seem to be in the golden age of version control, with a ton of choices, all of which have their pros and cons.

Here are the ones I see most used:

  • svn - currently the most popular open source?
  • git - very hot since Linus switched to it
  • mercurial - some smart people I know swear by it
  • cvs - the one everybody is switching from
  • perforce - imho, the best features, but it's not open source. The two-user license is free, though.
  • visual sourcesafe - I'm not much in the Microsoft world, so I have no idea about this one, other than people like to rag on it as they rag on everything from Microsoft.
  • sccs - for historical interest we mention this, the great-grandaddy of many of the above
  • rcs - and the grandaddy of many of the above

My recommendation: you're safest with either git, svn or perforce, since a lot of people use them, they are cross platform, have good guis, you can buy books about them, etc.

Dont consider cvs, sccs, rcs, they are antique.

The nice thing is that, since your projects will be relatively small, you will be able to move your code to a new system once you're more experienced and decide you want to work with another system.


Eric Sink has a good overview of source control. There are also some existing questions here on SO.