Subversion Service

The Department of Materials is now running a subversion server which is a powerful tool for managing and recording changes to files (e.g. software codes or configuration files or thesis files). Subversion is a document version control system.

Any member of department can ask for a subversion repository to be setup for a research group or project by emailing It is also possible to allow external users access for collaborative projects.

In order to access the subversion service it is necessary to supply a username/password combination in the form of an htpasswd (used for web authentication). This username password combination should not be the same as any of your existing ones.

In addition when requesting an account you will need to say whether you are wanting to setup a new repository/project owned by yourself or provide the name of an existing repository/project that you wish to join.

If you request a new repository then you should provide a preferred repository-name and a list of *all* users who will require access to that repository with the suitable username/password combinations in htpasswd format as above.

Example Access Control

Consider the following example showing permission control.

There are three example users with passwords:
testuser1 = *ask Paul Warren for password*
testuser2 = *ask Paul Warren for password*
testadmin = *ask Paul Warren for password*

There are three example projects:

Access is restricted as follows:
anyone can modify testproject
only testuser1 and testadmin can modify testproject1
only testuser1 and testadmin can modify testproject2

Example web interface to browse repository on-line

Authenticate as one the example users above and confirm what you can see corresponds to the above restrictions.

There is also a less user-friendly web interface provided directly using WebDAV at

Example confirmation of access controls under linux

mkdir ~/svn-stuff/testuser1
cd ~/svn-stuff/testuser1
svn --username testuser1 co
(this should work because anyone can modify testproject)
svn --username testuser1 co
(this should work because testuser1 can modify testproject1)
svn --username testuser1 co
(this should fail because testuser1 cannot access testproject2)

mkdir ~/svn-stuff/testuser2
cd ~/svn-stuff/testuser2
svn --username testuser2 co
(this should work because anyone can modify testproject)
svn --username testuser2 co
(this should fail because testuser2 cannot access testproject1)
svn --username testuser2 co
(this should work because testuser2 can modify testproject2)

Example checkout modify and commit

mkdir ~/svn-stuff/testadmin
cd ~/svn-stuff/testadmin
svn --username testadmin co
echo "Modified by testadmin" > testproject/trunk/example.txt
svn --username testadmin commit -m "Modified by testadmin" testproject/trunk/example.txt

Check on the websvn that the changes are registered correctly. as testadmin)

For more information about how to use subversion see on-line book at