User Tools

Site Tools


RAD Lab SVN Repository

RAD Lab uses SVN along with SSH public keys to manage source code development and other documents that undergo revision.


Access to existing repositories are authenticated via SSH keys.

Currently, access to existing SVN repositories is provided by To access an existing repository:

$ svn command [options] svn+ssh://<repo path>

We currently only support access via svn+ssh.

Granting Access

Access to the repositories is controlled via SSH keys installed in the <radsvn> account.

If you have access to, you can give yourself or someone else access to the SVN repository by following these steps:

  • Login as yourself into via ssh.
  • Use the sudo command to edit ~radsvn/.ssh/authorized_keys and add your or someone else's SSH public key to grant yourself or someone else access.
    • sudo -u radsvn vi ~radsvn/.ssh/authorized_keys
    • Note the format of already existing entries. A shell script may be written to automate some of this soon
    • For local (EECS users, possibly ICSI as well), use their login for the argument to -tunnel-user=.
    • For non-local (Intel, MS, nVidia, others), use something descriptive like “billgates@microsoft”.
    • When I get creative, I may find a way to put all this under SVN as well
  • Now test to make sure that you can do the following command from your workstation/laptop/etc
$ svn list [options] svn+ssh://<repo path>

If you do not have access to, ask someone in your research group who does to do this for you. You can also mail your SSH public key to asking for SVN access.

Note: By default, svn will look in ~/.ssh/id_rsa or ~/.ssh/id_dsa for your private ssh key. If you want to use a different key, you can use ssh-agent, but that is beyond the scope of this note.

Repository Organization

If you run

svn list svn+ssh://

you will see the following:

$ svn list svn+ssh://

This is a proposed hierarchy, stolen borrowed from ICSI ParLab, to help keep things organized. Feel free to add to or modify it.

  • /courses - for courses taught related to RAD Lab
    • a separate directory for every class-semester combo
    • name in form <coursename>-<year>-<semester> cs399-2007-fall
  • /docs - Internal documents
  • /papers - research papers/technical reports for submission/publication
    • one directory for every paper
    • name in form <topic>-<conference>-<year>-<optional tag>
    • example: multicore-techrep-1998-finaldraft
  • /projects
    • local developed code (software, HW design layouts, etc)
    • a separate directory for each project
  • /templates
    • templates for various types of documents, scripts, etc
    • separate directory for each template, even if just a single file
  • /vendor
    • for code from 3rd parties that we might modify locally for our own usage
    • separate directories for the current version and other versions in parallel: foobar-cc-current and foobar-cc-2.2 for example
tech/svn.txt · Last modified: 2011/10/20 14:29 by jkuroda