Software releases: when you want reliable software, you’ve got to have some infrastructure in place. And you’ve got to work in certain ways: good habits. Over a course of (estimated: 6) articles, I’ll show you what to do and what to set up if you start from basically nothing.
First things first: you’ll need to have all your code (and website configurations, and…) in a version control system. I’m assuming subversion (“svn”) here.
But don’t put your project’s code directly in an svn directory named after your project. In that case, you have one location that you use for:
Solution: a trunk/tags/branches structure. There’s a subversion
convention for setting up your repository. It is a bit of extra bookkeeping,
but it is necessary bookkeeping. Inside your project_name
directory you
need a tags, branches and trunk directory. Something like:
The purpose of the various directories:
svn cp http://yourproject/trunk http://yourproject/tags/0.1
. The idea
is that you can get a reliably fixed snapshot-in-time. It beats the pants
off “svn up -r1234”. And you can make a release of your python project
(zest.releaser-1.2.tar.gz
) which will be easy to identify in your svn
(zest.releaser/tags/1.2
). You can even generate releases automatically from such a structure.The exact behavioural rules vary a bit from project to project, especially in how strict you are in creating new branches compared to working on trunk.
Summary: the basis of proper releases is a good svn structure with trunk/tags/branches per project.
My name is Reinout van Rees and I work a lot with Python (programming language) and Django (website framework). I live in The Netherlands and I'm happily married to Annie van Rees-Kooiman.
Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):