Setting up a Group Subversion Repository

These instructions enable you to create and use a group subversion repository in a filesystem like /vol/project. They are based on the subversion book at

1. decide what directory will be used to store the repository, and who needs to access it. Basically find a single Unix group that will achieve this. For example, suppose I decide to create a csg-accessible repository in:


2. create the empty repository:

   svnadmin create  /vol/project/dcw/svn.repository

3. set the permissions and group ownership of that newly created directory:

   chgrp -R csg /vol/project/dcw/svn.repository
   chmod -R g+rwX,o= /vol/project/dcw/svn.repository
   find /vol/project/dcw/svn.repository -type d | xargs chmod g+s

4. now, to populate the repository with an empty project [a single repository can contain many projects], choose a suitable name, for instance memlib for a C memory allocation library:

   mkdir /tmp/EEK
   cd /tmp/EEK
   mkdir trunk branches tags

5. create any initial files inside "trunk", for the memlib example, I copied an existing Makefile, mem.c, mem.h and README from ~dcw/src/C/mem:

   cd trunk
   cp ~dcw/src/C/utils/mem/{README,Makefile,mem.[ch]} .

6. now, to import /tmp/EEK into your repository as a new memlib project:

   svn import /tmp/EEK file:///vol/project/dcw/svn.repository/memlib -m "initial import"

7. now, each user who wants access to that project does:

   mkdir ~/svn-working-area
   cd ~/svn-working-area
   svn co    svn+ssh://

8. If you are doing this from offsite/your laptop and your username on that machine is different from your DoC username, add username@server, for example:

   svn co    svn+ssh://

9. from that moment on, each collaborator may use all the usual svn commands without giving a URL when they're cd'd inside a working copy of memlib of any other project they've checked out. For instance:

   cd ~/svn-working-area/memlib/trunk
   svn up
   svn stat
   svn diff
   svn ci
   svn add {file or directory name}
   svnlook tree

Note that you MUST keep the repository and the working area SEPARATE, even if both live in your home dir..

Also, you can even use subversion from Windows, using TortoiseSVN, an excellent SVN manager for Windows: see Eclipse has the Subclipse plugin to connect Eclipse seamlessly to your repo.

The above svn+ssh URL should work fine from any internet connected machine in the world.

Finally, to avoid each svn command prompting you for your DoC password (because it uses ssh behind the scenes), on a DoC linux machine use "kinit", enter your College/Linux password, then you'll have a kerberos ticket which ssh will use for the next 9 hours. From offsite, you can create a personal ssh DSA key and set your remote machine up with ssh-agent. Look up the details yourself - or contact CSG for assistance..

guides/version-control/svn-group (last edited 2009-12-03 17:16:42 by dcw)