====== RAD Lab SVN Repository ====== RAD Lab uses SVN along with SSH public keys to manage source code development and other documents that undergo revision. ===== Basics ===== Access to existing repositories are authenticated via SSH keys. Currently, access to existing SVN repositories is provided by scm.millennium.berkeley.edu. To access an existing repository: $ svn command [options] svn+ssh://radsvn@scm.millennium.berkeley.edu/repo/ We currently only support access via svn+ssh. =====Granting Access===== Access to the repositories is controlled via SSH keys installed in the account. If you //have// access to scm.millennium.berkeley.edu, you can give yourself or someone else access to the SVN repository by following these steps: * Login as yourself into scm.millennium.berkeley.edu 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://radsvn@scm.millennium.berkeley.edu/repo/ If you //do not have// access to scm.millennium.berkeley.edu, ask someone in your research group who does to do this for you. You can also mail your SSH **public** key to [[radlab-support@cs.berkeley.edu]] 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://radsvn@scm.millennium.berkeley.edu/repo you will see the following: $ svn list svn+ssh://radsvn@scm.millennium.berkeley.edu/repo courses/ docs/ papers/ projects/ users/ vendor/ 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 -- cs399-2007-fall * /docs - Internal documents * /papers - research papers/technical reports for submission/publication * one directory for every paper * name in form --- * 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