This is a collection of recipes for using open-source version control systems. There are a number of goals to this cookbook:

  • share knowledge: if you want to do X with system Y, perhaps you can find your answer here
  • gather knowledge: if you have some clever VC tricks, share them here for all to see
  • highlight problems: if a useful-sounding task is difficult with many poppular VC systems, maybe they all need improvement. If many tasks are difficult with a particular system, maybe you should not use that system.
  • compare and contrast: seeing how different VC systems accomplish the same task reveals the differences and similarities between those systems

The wiki is organized by task rather than by version control system; each task page should explain how to perform that task with every VC system covered by the wiki.

Incidentally, one thing I don't want to do here is duplicate existing documentation. Simply cutting and pasting from manuals is not terribly useful or informative; I'll only do it if I can add some illuminating text or the comparison to another VC system is interesting. That's why I haven't bothered with recipes for the most common tasks, checking in and checking out code: they are generally well documented and pretty simple. (How far would a VC system get with an obscure, poorly documented "checkout" command?)

I've tried to cover the most popular (as of April 2008) open-source version control systems; in alphabetical order:

  • CVS
  • darcs
  • git
  • Mercurial (aka hg)
  • Subversion (aka svn)

(I know very little about darcs and nothing about Mercurial, so the sections on those systems are currently empty. Please contribute!) Feel free to add more VC systems, but please add an empty entry to every task page if you do so. That way, we'll at least have consistent ordering, and it will be immediately clear which VC systems are under-represented.

Enough of that: here are the task pages: