Jeff Lamarche blogs „Version Control is Your Friend“. I fully agree that version management is a phantastic pain killer – even when you’re a one man show.
The important difference version management makes to me, is, that I can delete, clean up and refactor with ease and without the fear of ever loosing anything. And removing cruft from my projects helps to remain focused.
Jeff features subversion. I think which tool you use doesn’t matter too much – important is to do version management at all, from the beginning and in a fine grained manner (per project repo, commit often).
I started using svn with version 0.17 (Jan 2003) but moved to git (and gitx) last year for a couple of reasons:
- full offline history and operations (due to its distributed nature), so there’s no moment in your development process when you need network,
- extremely compact storage. It’s not uncommon that a whole git working copy + repo is smaller than a mere svn working copy,
- cheap branching and merging,
- flexible hosting. If you want to publish a git repo you have a lot of really simple options, starting with ftp + http (static files on a webserver) for readonly repos or any webdav enabled webserver for r/w repos. No installation nor configuration of git components on the server. Most elegant is using ssh and gitosis if your hosting permits,
- doesn’t rely on IDE integration as much as svn does, as git detects moves and copies by itself (sic!),
- lightning fast and capable of insanely huge amounts of data. I once had a svn commit of one hour done by git in seconds. Really.