Skip to end of metadata
Go to start of metadata

Quick Start


  • If you're totally new to Version Control, then you'll find this PDFfrom the Pragmatic Programmer bookshelf is an "easy reading" introduction to the topic of version control.
    • If you are part of the Section on Statistical Genetics (SSG), there is a copy of Pragmatic Version Control, Using Subversion, 2nd Ed available for checkout.
  • To get started on Subversion, a version control system we like, read the intro and guided tour chapters from the excellent (and free) O'Reilly Subversion book .

    I've been using CVS
    • Even if you're an experienced CVS user, it is a good idea to go through the reading list in the previous section.
    • Read the Appendix for CVS users in the O'Reilly Subversion book. And this nice article that offers 10 tips for people who're switching from CVS to SVN.
    • If you are considering the migration of an existing CVS repository to SVN, you'll want to take a look at cvs2svn and possibly refer to the notes from the CVS to SVN migration for the HDBSTAT software.


  • Decide how you are going to use SVN
    • Operating System (Linux, Windows, Mac OS)
    • User Interface (from the Command Line, from an IDE, using a GUI)
  • Based on the previous decision, pick one or more from the list of Subversion clients below. The installation process for most of these is a breeze.


  • Once SVN is installed, the following resources might help ease the learning curve:
  • You can browse some existing SVN repositories by pointing your web browser to Sventon.

User contributions

  • Step-by-step instructions for beginners using TortoiseSVN, contributed by Qi Yan.

Subversion clients

Recommendations from the SSG programmers

We use and recommend the command line svn client. On Windows that usually means installing the svn package under cygwin. On Linux this is already taken care of on our local Linux servers and on the clusters.
If you want to use a GUI client on Windows, then we recommend TortoiseSVN.

From the command line

  • Download the client for most operating systems from here.
  • On cygwin for Windows, the svn package can be installed using the cygwin package manager.
  • Or if a package is otherwise unavailable, you can compile and install from the source code.

From a GUI

  • Windows - TortoiseSVN (tested, used and recommended)
  • Linux - rapidSVN (not tested; actually, a multi-platform tool)
  • Mac OS - scplugin or svnX
    • As of January 4, 2013, scplugin does not have move/rename commands, which are crucial tools for version control. See this stackexchange page for discussion of good paid clients for Mac.

From your IDE

  • Eclipse: A neat, stable plugin called subclipse
  • IntelliJIDEA: This IDE has subversion support built in
  • Visual Studio: AnkhSVN

Subversion on SSG systems

  • The SSG subversion server is hosted at
    • Supports the svn scheme.
    • SVN Administrator: Vinodh Srinivasasainagendra, IT Manager, SSG, SOPH,
Available repositories

There are a few dozen available repositories corresponding to the various data analysis, software development, paper writing, and other projects ongoing within the SSG that are taking advantage of version control.

  • If you need access to an existing repository, please contact the SVN administrator, who can grant the appropriate permissions.
  • If you are starting a new project that requires a dedicated repository, please contact the SVN administrator, who can create a new repository for your project.
  • If you are starting a new project, but are unsure on whether it requires a dedicated repository, you can create a subdirectory in the existing incubator repository and start working there (without having to coordinate further with the SVN administrator). If at a future point in time you decide this incubating project has matured enough to require a dedicated repository, the SVN administrator can then migrate that project out of the incubator into a separate, dedicated repository.
  • There is also a scratch repository available to SVN users for testing and temporary small-scale tasks and projects that do not fit well within the incubator or other repositories.
Creating a new subdirectory in the incubator repository

Because there are many existing projects in the incubator, you need to take care when checking out at the top-level. In other words, don't do this:

svn checkout svn://

Unless you intend to check out every single project within incubator. You probably want to do:

svn checkout -N svn://


svn checkout --depth=empty svn://

The -N or --depth options tell your SVN client to check out an empty top-level incubator directory, which will allow you to mkdir, svn add, and svn commit your new incubator sub-project.

Network protocols

After the SVN repository is created, we use a repository URL to checkout a working copy of the repository of interest.

  • Components of a Repository URL
    • scheme://<repository host>/<repository path>
  • Different schemes in repository URL
    • svn: Uses svnserve, a small daemon that listens for network connections, allows repository access over the network.
    • svn+ssh: Exchanges svn network traffic using ssh.
    • file: Access the repository locally (on the same machine).


  • None