The subversion repository layout follows the /trunk /branches/... pattern, so we have:
/trunk
/branches/stable-20100716
/branches/stable-20111231
/branches/stable-20110401
/branches/specialversion
/tags/some-tag
Then, we have a build server which can build the trunk and the current stable version.
Question is: How does the build server find the current stable version?
We use CruiseControl (java version) and ant for the build process in a windows enviroment. The subversion server is linux, though.
In CVS, we would have used a tag. This is the first time I am missing tags in subversion. I could tag the branch, but to keep the tag up to date, I would habe to delete/add the tag on each commit to the current stable version. Maybe a commit hook could help, but is there a simpler solution to automate this? (Maybe without learing windows scripting host or so?)
Addin a new project on the build server for each new stable release would be possible, but it's rather complicated and error-prone...
Maybe you could create a symbolink link to make a /branches/stable-version to redirect to your last stable branch (manual operation, but to do only once at each new stable branch creation). So your repository will look like this :
/trunk
/branches/stable-20100716
/branches/stable-20111231
/branches/stable-20110401
/branches/specialversion
/branches/stable-version # symbolink link to stable-20111231
/tags/some-tag