In the last week or two the Bamboo team have made a gigantic leap into the future by shifting to using a subversion repository for all of our template and extension development. And while I can hear some of you saying "well what took you so long" it is an idea that I've toyed with over the last few years but it always felt like overkill. Ive always viewed subversion as a tool for large teams and given that up until the start of last year it was really just me working on the code I didn't think it had any relevance to my workflow. In hindsight however I think I would have made the switch to using a subversion repository long ago.
What is SVN or subversion control?
For those that are new to subversion or SVN, its basically an incredibly helpful way to maintain code by keeping track of changes as new code is added/removed/edited or, in subversion lingo, committed to a project. In other words it's a complex way to maintain backups of the software/template/extension development as you go - allowing you to rollback to a prior state at any point in the process. There have been plenty of times where I had wished I could do that over the last few years.
Versions + Beanstalk = All sorts of awesome!
There are a few options out there in terms of software and services but basically I have gone with a little gem of a mac app called Versions and an online service called Beanstalk - Together they work beautifully and allow us to contribute then deploy code in a matter of a few clicks. Using SVN has also meant that its opened our eyes to various processes that can be automated via using Phing. Jeremy is at the moment putting together some scripts that will mean deploying templates and quickstart packages, as well as deploying fixes and changes to existing templates and extensions will be seamless and pretty much automatic.
My hope is that shifting to using a repository for development coupled with the development of our Zen Grid Framework will mean that we get to spend a lot more time on doing the stuff that we are passionate about - being creative, designing interesting Joomla templates and creating useful, and sometimes fancy, Joomla extensions.