How to use Source Control on the Engineering File Server
This page will explain how to set an Subversion (SVN) repository on a mixed-mode share on engineering's netapp. This guide is about SVN at BU specifically, but is applicable to most source or revision control systems (e.g. GIT, CVS, ...). It assumes basic knowledge of SVN. There is an SVN refresher at the bottom. The SVN program on Linux requires specific permissions to operate, which it cannot get on a windows-mode share, but if you only need Windows access, your repository can reside on a Windows share. For instance in \\ad\eng\courses\...
First you will need an SVN client. The package should be called "svn" or "subversion" in most package management systems under Linux. For help installing packages, please refer to your distribution's documentation. On windows, there are a many choices. For the purposes of this guide we will assume TortoiseSVN (http://tortoisesvn.tigris.org/)
Create the repository:
- Mount the share where you would like your repository to reside. You must have full access permissions to the folder. Any team members who wish to commit must also have full access, but only read access is required to checkout the repository.
- Create a sub-folder called "repo" or whatever you want.
With TortoiseSVN installed, right-click the folder, and choose "TortoiseSVN -> Create respository here"
Check out the repository:
- The share must also be mounted for checking out/committing, we will assume it is at z:/, and you created the repository in "repo" under the share.
- Create a local folder where you would like to check out the project .
- Right-click this folder and choose "SVN Checkout..."
- Under "URL of repository:" type
file:///z:/repo and hit OK.
- Make whatever changes, commits, updates you want. Note that the URL here uses forward-slashes '/', not the standard windows backslash '\' type paths, but the path below it is a windows path to the local directory.
Using Linux with Kerberized NFS
Many Engineering Linux systems mount the netapp with KerberizedNFS, these include all the instructional computing labs. Here's how to use SVN on these systems.
Create the repository:
On Engineering computers, the NetApp shares should already be mounted. You should put your SVN repository within the mixed-mode qtree in your share. If you do not already have a mixed-mode qtree, or if your share is not mounted or accessible, contact ENGIT. If you're using your own BU Linux system, follow the instructions at http://collaborate.bu.edu/moin/KerberizedNFS to mount your share on your own system. Replicate the mount settings for your share that are in the /etc/fstab on ENG-supported BU Linux systems -- you can see these by ssh'ing to enggrid.bu.edu and looking at the /etc/fstab.
- In the terminal, navigate to the share folder and type svnadmin create repo
This will create a folder called "repo" and set up a repository. Note that this will fail if there is already a folder called "repo." SVN will not overwrite anything here (which is a good thing!) and must be able to create and populate a new empty folder.
Check out the repository:
- In the terminal, navigate to a local folder where you would like to checkout the project
- This guide uses the shortened versions of subversion commands: co for checkout, ci for commit, up for update. Type
svn co file:///ad/eng/<share>/repo
- This will download the project to the "repo" folder. From there you may add files, commit, and update as you wish.
- If you are collaborating between Linux and MacOS users (or Windows users too), within the same SVN repo, you should additionally "chmod -R 777" your repo's "db" directory.
Using Other Linux (over sshfs)
The process here is equivalent, but it's a pain to mount kerberized shares on other linux distributions, so we will use sshfs. You will need to enable fuse in the Kernel (under Filesystems) and modprobe fuse if you compiled it as a module. The sshfs package is usually called fuse-sshfs. It is not a part of the BU Linux repositories, but was a part of Gentoo, for example. Your experience may vary. An RPM can be found here:
With sshfs installed, mount the share as follows:
sshfs -o workaround=rename user@enggrid:/ad/eng/<share> /<local mount point>
the "workaround=rename" option is vital. Without it SVN will not be able to perform some vital operations for committing, and commit will fail.
With the share mounted via sshfs, the procedure is exactly the same as above.
Cross-platform SVN+SSH access directly from your SVN client
Please follow the example instructions at http://csoft.net/docs/svn.html.en , being sure to utilize the fileservers and paths described for the direct file access instructions above.
To get the most up-to-date version:
- svn update --in the local repository folder
To put files under version control:
- svn add ./* --in the local repository folder (or specify specific files)
To remove a file from version control:
svn rm <file>
To commit your changes (after you've added, removed, moved, etc.)
- svn ci -m "your commit message (this is required)" (here "ci" is shorthand for "commit")