As the Crixa resurrection picks up steam, we naturally need to deploy some support tools. I’ve always wanted to try out Subversion, a successor to the venerable Concurrent Versioning System (CVS), which is a version control system for documents. Installation log follows:
Before installing Subversion (SVN), I have to update my Apache 2.0 installation on my server. Bah. Now I have to remember how to do it. Note that everything here is done from the command line shell, and I’m compiling from source.
Update: Feb 12, 2007 — Since I wrote this, there have been updates to svn and it’s easier to install if you want to run it as a simple daemon. For installing version 1.4.3 on my MediaTemple dedicated virtual server:
wget http://subversion.tigris.org/downloads/subversion-1.4.3.tar.gz wget http://subversion.tigris.org/downloads/subversion-deps-1.4.3.tar.gz tar xvzf subversion-1.4.3.tar.gz tar xvzf subversion-deps-1.4.3.tar.gz cd subversion-1.4.3 ./configure --prefix=/usr/local/svn --without-apache --without-berkeley-db make make install
subversion-deps-1.4.3.tar.gz has all the extra libraries you need to compile svn successfully. Note that I’m not compiling this with apache support. I’m just going to use
svnserve as a simple daemon instead of as an Apache module.
Create Subversion User
svnserve will be running as a daemon, I need to create a user to run it as, so it doesn’t run as root.
groupadd svnusers useradd svn
Run the Server
The command to startup the server as a daemon (-d), pointing to a particular repository (-r), is:
sudo -u svn /usr/local/svn/bin/svnserve -d -r /home/svn
/home/svn/ directory was automatically created by the installation process. It listens at port 3690 by default.
Each repository needs to be created with the following command (I’m not using berkeley db, so I have to specify the file system type):
svnadmin create --fs-type fsfs /home/svn/name_of_repo
- Note that this has to be done for each repository.
- Make sure it’s owned by the svn user; if it isn’t, use
chown -R svn /home/svnto do it.
Testing the Repository
To check that svn is seeing the repository, type
svnlook info /reposdir on the command line.
You also have to set up svnserv.conf, in the repository’s
Edit svnserv.conf and set the
[general] anon-access = none auth-access = write password-db = passwd realm = Name of Repository
This sets the repository so anonymous access is disallowed, but authenticated users are allowed.
passwd file in conf with a text editor (I just used Emacs). It just has
[users] at the top, and
username = passwd on each line.
[users] jimbob = howdy clara = tinny
chgrp both files to the
svn user and group.
Next, see if everything is working by accessing the repo with the following commands (name_of_repo is the same as what you used above for the
svnadmin create command):
svn list --username jimbob --password howdy svn://yourserver.com/name_of_repo
repo is the name of the repository you created inside your repository folder; it’s just the one directory name, not the entire path. If it works, you shouldn’t see any output from the
svn list command. To see something, try this:
svn log --username jimbob --password howdy svn://yourserver.com/name_of_repo
If everything is well, the output will be something like “No commit for revision 0”, which means that the repository is empty. If it doesn’t work, check the file permissions again to make sure all repository directories are owned by the
Running the Client (TortoiseSVN)
After Installing TortoiseSVN on my Windows XP machine, I had to reboot it. Afterwards, the right-button context menus in the Windows File Explorer give you new options for
SVN Checkout and a
Populating the Repository with TortoiseSVN
Set up a directory just the way you want. This is a good time to set up
tags if you’re so inclined. I create a directory structure called
_svn_project_init that I use for populating the repository. Right-click to IMPORT to the repository.
After populating the repository, it’s ready for us. I create a new directory called
_svn_project and then I checkout into it. This creates what is known as your “working copy”.