From SlackWiki
Jump to: navigation, search

Slackware - SVN Howto

--dadexter 02:49, 14 Dec 2005 (GMT)

This how to will explain how to setup Subversion, a replacement for CVS. These instructions were written for use with an apache2 web server. Don't know if it will actually work with apache1. Thanks to my good old buddy cactus ( for the original version of this, which I adapted to Slackware :)

1) Install Subversion

Download subversion and compile it using these steps:

  1. wget
  2. tar -jxvf subversion-1.2.3.tar.bz2
  3. cd subversion-1.2.3
  4. ./configure --prefix=/usr --with-apr=/usr/bin/apr-config --with-apr-util=/usr/bin/apu-config --with-zlib
  5. make
  6. checkinstall

If you're on Slackware 10.2 and above, subversion should already be installed. If not, grab it from your nearest friendly slackware mirror :)

2) As root, create the svn root:

  1. mkdir -p /home/svn/repositories

3) Configure apache-svn support

Add these 2 lines to your httpd.conf (mine is in /etc/apache2):

 LoadModule dav_svn_module       lib/apache/
 LoadModule authz_svn_module     lib/apache/

I use SSL for apache, so I need to add

 <Location /svn>
    DAV svn
    SVNParentPath /home/svn/repositories
    AuthzSVNAccessFile /home/svn/.svn-policy-file
    AuthName "Test SVN Repo"
    AuthType Basic
    AuthUserFile /home/svn/.svn-auth-file
    Satisfy Any
    Require valid-user

to my /etc/apache2/ssl.conf, inside the VirtualHost directive.

Don't forget to restart your httpd at this point

4) Setup the svn root directory:

Create /home/svn/.svn-policy-file

 * = r
 dadexter = rw

The * in the / section is matched to anonymous users. Any access above and beyond read only will be prompted for a user/pass by apache AuthType Basic. The /svn/test section inherits permissions from those above, so anon users have read only permission to it. I granted myself read/write permissions to the repo.

Create the svn-auth-file

This is either an htpasswd, or htdigest file. I used htpasswd. Again, because of SSL, I don't worry as much about password sniffing. htdigest would provide even more security vs sniffing, but at this point, I don't have a need for it.

 htpasswd -cs /home/svn/.svn-auth-file dadexter

The above creates the file (-c) and uses sha1 for storing the password (-s). The user cactus is created. To add additional users, leave off the (-c) flag.

 htpasswd -s /home/svn/.svn-auth-file userX

Create a repository

 svnadmin create --fs-type fsfs /home/svn/repositories/test

I prefer the newer file-system based repository. No database corruption/blocking issues. (--fs-type fsfs)

Set permissions

The apache user needs permissions over the new repository.

 chown -R nobody.nobody /home/svn/repositories/test

4) Client setup

Install the package created above (or the package from the Slackware mirror) on your development machine. Next, create a directory to hold your development stuff, and create the svn directory structure:

 mkdir -p ~/coding
 cd ~/coding
 mkdir branches tags trunk

Put your source files into the created trunk directory. Here, I copy my development directory for an online reservation system I'm working on.

 cp -R /home/martin/cal2/* trunk

Finally, import your development project into the svn repository:

 svn import -m "Initial import"

5) Testing the checkout

 cd ~
 rm -rf coding
 svn co

I end up with the same ~/coding I had before :)