Mike is currently…

getting whipped at Halo

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



Google

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.  

December
Mon Tue Wed Thu Fri Sat Sun
29        

[ 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 ]

skizz-biz

[ joe walnes ]

joe's new jelly

[ rob baillie ]

oracle

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.