Mike is currently…

snowboarding in Banff

Pragmatic Version Control Using Subversion

[ subversion book ]

obligatory book plug

[ syndicate ]

rss 2.0 feed for boy meets world

[ contact ]

drop me a line

[ about ]

this is mike mason's weblog

[ eskimoman.net ]

original web pages


Mon, 29 Dec 2003

This is an archived blog post. I've switched to using WordPress as my blogging software and have not migrated all my old posts. I believe strongly in not letting an old link die, so this page continues to work. Please do visit mikemason.ca/blog to read newer posts.

Subversion and Continuous Integration

I’m pleased to announce that CruiseControl.NET now includes Subversion support. Stuff like this is critical for Subversion to be widely adopted, at least in Agile circles, and is part of my mission as a Subversion-ho.

For those of you who’ve not yet heard the good news, Subversion is a fantastic system that is going to become the defacto standard for Open Source version control. Whilst Subversion doesn’t really forge new ground in version control, it does fix many of the problems with CVS, and brings with it features like atomic commit, database backing and off-line operation. There are cases where advanced branching and merging may be required, but for most projects straightforward version control that works consistently and robustly is far more important. Subversion does have those advanced features, but at the moment requires a bit of manual book-keeping.

There are a couple of points that people regularly make when I talk about Subversion, and I’d like to answer them here.

“…but it requires Apache 2”. Subversion doesn’t force you to use Apache — it has its own svnserve daemon that can network a repository and supports basic username/password authentication (you can also enable anonymous access). If you want, you can use ssh to secure access, but this means each of your users requires a Unix account. Subversion leverages Apache because it provides many authentication and security options, right up to SSL with server and client certificates. You can run both Apache and Apache 2 on the same machine, as long as you run them on different ports.

“…but it doesn’t have feature X like software Y”. Subversion is designed to replace CVS, not to be a quantum leap in version control technology. If you’re looking for a highly distributed system, you want BitKeeper, svk or arch. If you have particular integration requirements, such as Visual Studio, but don’t want to use Visual Source Safe, you could try Vault. Subversion does have plugins for Visual Studio, and for most other IDEs. Most people use a very small set of version control features, and Subversion implements basic version control (checkout, update, diff, commit, view history, branch, tag, merge) very well, and includes plenty of scripting support so you can add your own tweaks.

Subversion is currently at release 0.35.1, and has been self hosting for over two years (Subversion is used to develop the Subversion code). The all important 1.0 release is slated for the next month or so, but I’ve used previous versions for serious projects with large volumes of changes, and have found it to be robust, performant and generally excellent. There are a multitude of clients, including ports of many familiar CVS utilities such as TortoiseSVN. The “feel” of Subversion will be immediately comfortable for existing CVS users, and as a Perforce devotee I’ve found a lot of features work the same way.

If you’re starting a new project, or are finding that your current version control system isn’t up to scratch, Subversion should be on your radar as a potential replacement. Its Open Source licence, easy upgrade path from CVS, and robust feature set make it worth looking at, and I think some of the commercial version control vendors should be getting worried.

Posted 16:50, 29 Dec 2003.  

Wed, 03 Dec 2003

This is an archived blog post. I've switched to using WordPress as my blogging software and have not migrated all my old posts. I believe strongly in not letting an old link die, so this page continues to work. Please do visit mikemason.ca/blog to read newer posts.

Fastest Developer in the West

Yesterday was XP Day here in London, and although I didn’t make it along during the day, I did get to the most important event – drinking in a pub afterwards. One of my colleagues was describing his experiences at one of ThoughtWorks’ clients, a large online banking organisation. He said that for every ten projects, only two will ever go live, and only one of those will survive long-term. How does that affect a team’s development strategy?

It was suggested that the fastest way of getting a prototype out of the door was to abandon XP practices like Test Driven Development, and revert back to just hacking the code until it works. I have to disagree – I really think that doing proper TDD and unit testing helps me write code fastest. If I don’t have tests, I will get lost, assuming the code I’m writing is even vaguely challenging. Maybe I can just bash out the code, but how long will testing it manually take? Probably at least as long as writing my unit tests. I could just hand the “completed” code to QA when I think I’m done, without performing any testing, but then they’re going to find glaring bugs in it and hand it back. Probably two weeks later when I’ve forgotten what I wrote. A long feedback cycle doesn’t help me deliver code quickly, and unit testing is the quickest way to get feedback.

We realised that ThoughtWorks isn’t a consultancy — it’s a self-help group for developers who are really testers. We should have these meetings where we sit round in a circle and say stuff like “My name’s Mike and I’m test infected.” I’ve been writing code with lots of tests ever since joining ThoughtWorks, and I don’t think I could go back…

Posted 17:41, 03 Dec 2003.  

Mon Tue Wed Thu Fri Sat Sun

[ tim bacon ]

musings of an xp coach

[ ian bourke ]

enhancing core competencies since 1976

[ martin fowler ]

a cross between a blog and a wiki

[ alan francis ]

agile != good

[ paul hammant ]

part of the problem…

[ darren hobbs ]

the blog formerly known as pushing the envelope

[ mike roberts ]

on life and technology

[ chris stevenson ]


[ joe walnes ]

joe's new jelly

[ rob baillie ]


Powered by Blosxom

Registered plugins: SmartyPants, antispam, bloglinks (v0.2), calendar (v0+6i), pluginfo (v1.0), and userstatus (v0.1)
This work is licensed under a Creative Commons License.