The CHICKEN Subversion repository

Historically, CHICKEN provided a Subversion repository for keeping egg code under version control. This strategy predates git and the fancy distributed version control systems we have these days, in case you are wondering why we used Subversion. See distributed-egg-repos for information on the motivation to switch to the distributed approach to host eggs.

We still use the Subversion repository for eggs managed by the CHICKEN core team, and we may even host your egg if you can't use any of the many free VCS providers available. The recommended practice is to host your eggs remotely (i.e., not using the CHICKEN Subversion repository).

In case you have to host your egg code on the CHICKEN Subversion repository, see the accounts page on how to request an account.

The section below contains information on how to manage eggs under the CHICKEN Subversion repository.

Directory structure

The directory for your egg will have the following subdirectories:

trunk
Here you can keep the latest (potentially unstable) development version for your egg.
tags
You should keep one subdirectory of this directory for every release for your egg. The names of the directories here should correspond to the version number of their associated release.
branches
Contains, as subdirectories, any special branches of the code that need to be maintained apart from the trunk.
extra
files that you want to keep under version control but are not required to be installed by chicken-install

For documentation, there is a wiki directory at the top-level of the repository. It holds the entire contents for this wiki.

Importing your files

You will initially copy your files to the trunk directory, add them manually and commit your changes. For example:

$ svn add trunk/mpeg3.scm
$ svn add trunk/mpeg3.setup
$ svn add trunk/mpeg3.meta
$ svn commit -m "Importing mpeg3 extension."

Making a new release

Once the code in trunk is reasonably stable and you want to make a new release, copy it to a new directory under tags.

The directory should be named after the software version.

Software versions should have the form of a list of numbers separated by a dot (eg. "1.3.4" is a valid software version, whereas "1.3-0" or "1.3rc0" are not).

For example, to make the 1.3 release for mpeg3, you would run the following commands (at the directory where you checked out your egg):

$ svn copy trunk tags/1.3
$ svn commit -m "Releasing version 1.3."