wiki:Subversion

Subversion (SVN) is the version control system we've used until we found a better alternative. Since then, our Subversion system exists only as an archive, with most of its content migrated to the new system. Consider this page legacy documentation and see the Git pages for information about our new system'''

See Subversion/Structure for the standard structure used in the group. If you are unsure where something should go, ask the sysadmin or the tea group.

The SVN repository replaces the previous CVS repository. The CVS repository is now obsolete and should not be touched anymore.

If you are already familiar with CVS, a quote from tigris.org: "Subversion is meant to be a better CVS, so it has most of CVS's features. Generally, Subversion's interface to a particular feature is similar to CVS's, except where there's a compelling reason to do otherwise." That means that most commands such as add, update, commit work as with CVS - just replace "cvs" by "svn".

To checkout a project:

svn co  https://rtsys.informatik.uni-kiel.de/svn/<project_name>

You can also checkout specific parts of a project, eg:

svn co  https://rtsys.informatik.uni-kiel.de/svn/papers/eurasip-jes06

To create a completely new repository:

ssh svn@rtsys cd repos svnadmin create <name>

Exchange <name> with the name of the new repository!

New repositories are generated without any permissions. To use the new repository permissions need to be set in

/home/svn/etc/svn.permissions

The file format should be self-explanatory.

Notes

  • Remember: Subversion is a system to control source-files. So do not put any generated files (object files, .class, generated C-code) into the repository.
  • DOS and UNIX differ in their treatment of line breaks in ASCII documents. SVN can deal with those differences but to achieve this the svn:eol-style property of text files has to be set to native. This can be done the following way when adding text files to your working copy: svn propset svn:eol-style native <filename>

This can be done automatically by activating auto_props in ~/.subversion/config or even better by replacing ~/.subversion/config with this  File.

  • As character encoding is a hassle every svn user is strongly advised not to use german special characters such as äüöß in filenames and commit-messages
  • As windows is case-insensitive please make sure that all filenames are unique wrt. case-sensitivity, ie. do not check in file.pdf and File.pdf in the same directory
  • Furthermore windows' ability to handle special characters in filenames are quite limited so please do not use uncommon characters in filenames such as $&?*... They have special meanings under different operating systems
  • If the repository has been checked out directly from jitter this should probably fix it: find . -name entries -exec perl -pi -e "s/jitter/tick/" {} \;

External Access

To give access to somebody without a local account, perform the following command:

svn@tick:~/etc$ htpasswd -b svn.users username passwort

The username should be firstname.lastname and the passwort a random string. Thereafter set the permissions in svn.permissions. Let the new user know the Passwort and username, but do not email it to him.