User Tools

Site Tools


sedev:svn

(back to the SE development page)

Subversion

A lot of articles and documentation are available about the use of Version Control Systems, and Subversion in particular. A few links:

Subversion itself is a command line program (called 'svn'). It is available at the SE Linux systems. There are also graphical clients that you may want to use:

Data store organization

The central data storage of the project is called repository (often abbreviated to repo). An important part of the repository is called trunk. In this directory, you always have the latest working version of the project data. Other common directories are branches and tags.

Data in the repository can only be accessed using Subversion (svn). Each user gets his own copy of (part of) the repository in his own account (for example, a copy of all data in 'trunk'). Such a copy is called working copy. In the working copy, you make modifications to files, run tests, experiments, etc. When you are happy with the modifications, you can commit your changes to the repository. Through the commit mailing list, all other members get an notification of this commit. You can also get new modifications from the central data storage into your working copy (remember, everybody can make changes into the repository, not only you). This is called update (you are updating your working copy with new modifications).

Each change in the repository is given a unique number, called the revision number or just revision. (The term version is normally not used, to prevent confusion with releases (commonly known as versions) of the data files.)

With UQDS, a set of rules is used that define how to use trunk and branches (see also the UQDS Wiki page):

  1. trunk always contains the latest working version. It is never edited directly, you may only change it by merging from a branch.
  2. branches contains sub-directories with copies of trunk (one for each ticket that is being worked on). Here, changes to the data files are being made to fix a problem.
  3. tags contains copies of trunk at an important point in time. For software, bringing out a new release is a common important time point. By convention, once a copy is made here, it is not touched again.
  4. (optional) sandbox is 'play-ground' for highly experimental changes (ie not well enough understood to make a ticket, and put changes into trunk). Usually, each developer makes a sub-directory for himself so experiments are somewhat organized.

Some important svn commands (since Combinator takes care of branch management, you seldom need the more advanced commands):

Command Description
svn status Query status of svn-controlled files and directories
svn update Update your working copy with changes from the repository (mostly useful in trunk, since nobody but you works in your branches)
svn commit Commit your changes to the repository (use Trac Wiki syntax to format your commit messages)
svn diff Displays the changes between your working copy and the repository
sedev/svn.txt · Last modified: Friday, 19 February 2010 : 08:16:08 by dhendriks