Table of Contents

Subversion

This tutorial is not about using a version control system, or about using Subversion, but about how to get started with Subversion on SDF. Other source control tools available for looking into are SDF-hosted git (newer, distributed version control), CVS (older technology than SVN) and RCS (the granddaddy)

There are graphical tools such as TortoiseSVN, but we will start with Subversion's command-line tool (this is SDF we're talking about, right?) which is svn, and is installed on the cluster

Subversion is normally intended to be hosted on a server, so working with it locally with an SDF user account is a little awkward, requiring the use of file:// URLs. At the end of this tutorial, we will touch on how to set subversion up for remote access.

Creating A Repository

To create your own svn repository (place to store projects under source control) run the commands to setup a repository named “my-cool-project” in your homedir under $HOME/.svn_repos.

$ mkdir .svn_repos
$ svnadmin create .svn_repos/my-cool-project

You can then checkout your new repository into a working directory.

Make a directory for the working copies of your projects, say:

mkdir ~/coding-projects

In this local setup where we are using file:// URLS, Subversion requires that you use an absolute path to the repository. To learn the full path to your home directory type:

 cd; pwd

In the rest of this document you will need to replace '/path/to/homedir/' by the output of the previous command, or alternately, the $HOME parameter

Then we can (locally) check out our project like so:

svn co file://localhost$HOME/.svn_repos/my-cool-project

Importing A Directory

If you want to add an existing folder to your repository:

Let's import our website into our repository! :!: Note that after the import is finished, the original local directory does not become a working copy. To begin working on that data in a versioned fashion, you still need to create a fresh working copy of that tree.

  cd html
  svn import -m "initial import" file://localhost$HOME/.svn_repos/my-cool-project/html

In this command

You can modify the message, the module name and the tags to your liking, just keep in mind that in the rest of this tutorial we will use 'html' for the module name.

Checking It Out

 cd ~/coding-projects
 svn co file://localhost$HOME/.svn_repos/my-cool-project/html

To verify that you've checked out a working copy of just the html directory, first, do an ls html and see that the files are there. Second, run svn info. It should output something like:

$ svn info html
Path: html
Working Copy Root Path: /sdf/arpa/ns/p/peteyboy/coding-projects/html
URL: file://localhost/sdf/arpa/ns/p/peteyboy/.svn_repos/my-cool-project/html
Relative URL: ^/html
Repository Root: file://localhost/sdf/arpa/ns/p/peteyboy/.svn_repos/my-cool-project
Repository UUID: 6909fbfb-0895-7146-9482-bf1fd1033119
Revision: 1
Node Kind: directory
Schedule: normal
Last Changed Author: peteyboy
Last Changed Rev: 1
Last Changed Date: 2021-03-17 20:56:14 +0000 (Wed, 17 Mar 2021)

Accessing It Remotely

One way to easily set up access to your svn repo for remote use is to set up Trac on SDF

Another is to run snvserve, but this is complicated, as on SDF, subversion is installed on the cluster but not on the metaarray, but users can only run processes on their Allocated port on the metaarray. If a user wants to do this, they should post to bboard and request svn to be installed there.