Subversion

From ProgClub
Revision as of 17:46, 12 August 2011 by John (talk | contribs) (Created page with "[http://subversion.apache.org/ Subversion] is a version control system used by ProgClub to store files related to its projects. ProgClub's subversion repository is called 'p...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Subversion is a version control system used by ProgClub to store files related to its projects.

ProgClub's subversion repository is called 'pcrepo', and it's available in two flavours:

Anyone can access the public read-only version of pcrepo. In order to access the private read-write version of the repository you need and account, which means you need to be a registered member. Becoming a member who has commit access to pcrepo entails accepting the ProgClub terms and conditions, specifically the Copyright policy which includes the Contributor License Agreement (CLA) wherein members agree to license their contributions under the licensing terms of the project.

ProgClub's projects are configured in pcrepo with sub-directories of 'trunk', 'branches' and 'tags'.

Trunk

Trunk is the mainline repository, and can often be unstable as it is used to ferry files under development between development workstations and development servers. For this reason, subscribing to trunk is generally a bad idea, unless you are a ProgClub member actively working on the project.

Branches

Branches are a location for members to create private copies of the repository (typically branching off trunk) for the purposes of establishing their own workspace. After the work in progress is satisfactorily completed in a branch, it will typically be manually merged back into the trunk. At the moment ProgClub doesn't have any branches, we're collaborating via trunk.

Tags

Tags are a location for 'tagging' specific versions of a project. At ProgClub 'tags' contains two sub-directories, 'latest' and 'release'.

Latest

Latest is the directory you want to follow with your svn:externals. It's a pointer to the latest stable release of the project. It gets updated by our release management script, which is detailed below.

= Release

Release is a directory containing sub-directories in the form {year}/{month}/{day}/{serial}, where {serial} is a number between "01" and "99", the other variables being self-explanatory. Basically there can be up to 99 releases per day, and the dates generally use the UTC time of the server (although this is not really important). The point of a release name is to be unique for that release, and to be sensibly sortable. If you're interested in a specific release, you can look in the release directory to find it. Unlike 'latest', tags in 'release' are static, and they are not changed after they're made, at all, ever.

Managing a release

There is a release script in /home/jj5/bin/release which will manage the release of a ProgClub project. There's an article about it on the blog. Essentially to use this script you just run it passing in the name of the project you are releasing, so that might be something like 'pcwiki' or 'pcma', etc. The script will create the 'release' tag for that release, and then update 'latest' with the latest release. For example, to release pcwiki, you would use the following command:

$ /home/jj5/bin/release pcwiki