So it’s time to setup Subversion; I’ve been using CVS almost forever for my larger projects, and relying on Time Machine for my smaller projects. Which don’t get me wrong, works great, but CVS is getting a little dated, and there’s no Time Machine type app that I can find, for my new Windows laptop.
So, subversion. Sure, I could use GIT, that’s what folks seem to be using these days, but it seems not-quite-suited to what I want it for – which is one person, developing using multiple machines.
So, I’ll be setting it up on my existing source-control VM. I don’t think I need to bother with Webdav access – just svn+ssh will do nicely for remote access, and plain svn for servers within GS fetching their new releases.
Installing
My environment is almost 100% Debian, so first we install the subversion package
vorlon:~# apt-get install subversion< Setting up libsvn1 (1.6.12dfsg-6) ... Setting up subversion (1.6.12dfsg-6) ... vorlon:~#
Then we want to create our new repository. I’m going to have a repository per project, just to make it easy to hand a repository over to a client, should they ever move development inhouse, or the like. Lets setup TremSearch
vorlon:~# mkdir /var/lib/subversion/tremsearch vorlon:~# svnadmin create /var/lib/subversion/tremsearch
Ok, our repository is created, but we need to add users!
cat >> /var/lib/subversion/tremsearch/conf/passwd << __END__ [users] damien = <redacted> webserver = <redacted> __END__
And we need to give them access – edit conf/svnserve.conf:
[general] damien = write webserver = read anon-access = none password-db = passwd
‘Note the anon-access = none’ – The SVN documentation seems to say that ’read’ is the default for anonymous users! That seems a little daft to me, but I’ll set it to none, just incase they’re for real!
Oh, Subversion for debian does not have a start script! So we’ll add one..
cat > /etc/init.d/subversion << __END__ #!/bin/bash ### BEGIN INIT INFO # Provides: svnserve # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: # Default-Stop: # X-Interactive: true # Short-Description: Start/stop svnserve ### END INIT INFO svnserve -d -r /var/lib/subversion/ __END__ chmod u+x /etc/init.d/subversion ln -s /etc/init.d/subversion /etc/rc2.d/S99subversion
Note that we’re locking base SVN url’s down to /var/lib/subversion. We’ll see how this works below.
Start up the server (/etc/init.d/subversion) and we’re done!
Importing your code
Importing your code is fairly easy – change to the directory your code resides in, and import it.. And then, I move the original directory out of the way, and check it out:
damien@:/export/home/projects/tremsearch/www$ svn import -m "initial import" ./ svn://svnserver/tremsearch/www . . . Committed revision 1. damien@:/export/home/projects/tremsearch/www$ cd .. damien@:/export/home/projects/tremsearch$ mv www old-www damien@:/export/home/projects/tremsearch$ svn checkout svn://svn.rendrag.net/tremsearch/www www . . Checked out revision 1.
And done!. Now I can check it out on my laptops, and work with it! And the added bonus here, is that I don’t have to worry about SCP’ing changes up to the webserver anymore, and keeping track of changed files – I just jump into the www directory on the webserver, and ‘svn update’ 🙂