From GUS Wiki
Jump to: navigation, search

(This page is a copy of CBIL's internal Subversion documentation. Changes should be made in both places).

Using Subversion


See also SubversionInEmacs.

Subversion is a source code control system that allows multiple developers to effortlessly work together on software projects. It is a replacement for CVS.

CBIL maintains three subversion repositories: cbil, api, and gus. Each repository has one or more projects contained within it (for example, the gus repository contains the GUS project and the WDK project). Each project has a trunk, branches, and tags associated with it. The trunk serves as the main area of development. Branches are copies of the trunk (or of another branch) that allow a developer to make significant changes to the code while not impacting the trunk. Branches also allow developers to fix issues in old code that may now be inconsistent with the trunk. This last point is acheived by using tags, which allow developers to "tag" items in the repository with a friendly name, allowing easy future access to the repository at a point in time.

For example, a project is developing software using the trunk. Each release, they tag their software. It's now (as of release 8.0) been discovered that there was a bug in the 2.0 release, and it needs to be addressed and rerelased. The team can branch the rel2_0 tag, creating a copy of the repository as it looked at the rel_20 tag. They can then fix the issue in the 2.0 release. If they choose, they can then "merge" the changes from this branch back into the trunk, so the fix will apply for the 8.0 release as well.

The Subversion Repository thus follows the following layout:


Commit Mailing Lists

Each repository has a dedicated mailing list for commit notifications. You must sign up for these if you intend to commit at:




Common Subversion Actions

Checking Out

To check out a project:

svn co{repos}/{project}/trunk {dir}
  • Replace {repos} with the repository name (gus, cbil, api)
  • Replace {project} with the project name
  • Replace {dir} with the name of the directory you'd like to checkout into. For example, using GUSHOME will create the directory GUSHOME (if necessary) and place files from the repository directly in that directory.


To commit a file or directory:

svn commit {file/directory}
  • Replace {file/directory} with the file or directory you wish to commit. If omitted, the current directory is used.

For more information, permissions issues, or help