The first company I ever coded for had a CVS server on a redhat box under my desk. I learnt roughly how CVS worked, and mostly how good it was for tracking changes, and how horrible I found the merge process.
At my next company, I couldn’t see a way that CVS would be very useful (I was wrong) but when we ported my pet project from one language to another we added a CVS repository, and that worked well. I found out about SVN, but didn’t have time to implement it, though I used it at home.
Trutap used Subversion extensively, branching trunk for every milestone, the milestone for every ticket. Merging was a pain in the arse, and one person ended up on dedicated “merge” duty. I learnt how useful properly done SCM could be.
Current company I started at with a free reign, and decided the way forward was Git. I’ve used SVN for a while, but the only way I’ve seen it work really well – the trutap method – works even better – and a hell of a lot more naturally – as a Git repository. I have drunk from the Git kool-aid, and it is both delicious and refreshing. A few days later I found that dotwaffle – who worked there before I did – had the same idea and had already set up a central git repository somewhere else.
It follows, then, that I have pretty much abandoned my self-maintained and dodgy subversion server, and shifted all my various code projects over to “Github”:http://github.com/aquarion where they can languish in an unfinished state on someone else’s repository. This now includes all the code behind the “Lifestream” box to the right of this post, in the unlikely event you’re viewing it on my site.