Link http://www.linuxcrafts.com/2013/05/svn-installation-on-linux.html
Subversion is an universally recognized and adopted open-source centralized version control system and is used in the development of many software projects.
Here I will explain the installation procedures for the latest subversion software and some configuration related to it along with the installation of web based subversion administration interface.
I am going to explain the two methods of subversion installation on a fresh ubuntu server.
First method is the stock installation from ubuntu repository,
Install Subversion, Apache and Subversion server modules for Apache by issuing the below commands,
apt-get install apache2 libapache2-svn subversion
Thats it !!
But I prefer the installing from source, ( Method Two )
Install the dependencies,
apt-get update
apt-get install tzdata libexpat1-dev libapr1-dev libaprutil1-dev pkg-config apache2-prefork-dev libapache2-svn apache2
Apache Portable Runtime are required for accessing repositories via web protocols that is http:// https:// with neon support,
neon is an HTTP and WebDAV client library, with a C interface. We need to download and install neon from the link below,
wget http://www.webdav.org/neon/neon-0.29.6.tar.gz
tar -zxvf neon-0.29.6.tar.gz
cd neon-0.29
./configure
make && make install
Now we can start installing subversion, download latest package from this link http://www.carfab.com/apachesoftware/subversion/subversion-1.7.9.tar.gz
tar -zxvf subversion-1.7.9.tar.gz
cd subversion-1.7.9
./configure –with-apr=/usr/bin/apr-1-config –with-apr-util=/usr/bin/apu-1-config –with-neon=/usr/local/
make && make install
This will install the latest subversion on your machine, You can check it by issuing the below command,
svn –version
svn, version 1.7.9 (r1462340)
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
– handles ‘http’ scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
– handles ‘svn’ scheme
* ra_local : Module for accessing a repository on local disk.
– handles ‘file’ scheme
Check Subversion server modules for Apache,
apachectl -M
dav_module (shared)
dav_svn_module (shared)
authz_svn_module (shared)
Comment out the entries in /etc/apache2/mods-enabled/dav_svn.conf file, we can use apache virtual host file for adding those parameters.
Now we can install a web based subversion administration interface. For that I choose svn access manager.
Install the dependencies,
apt-get install mysql-server php5 libapache2-mod-php5 php5-mysql
Download it from this source, http://ncu.dl.sourceforge.net/project/svn-access-mana/svn-access-manager/0.5.5.22/svn_access_manager-0.5.5.22.zip
unzip it, rename it to access and move it to your apache document root. /var/www/html/ in my case,
chown apache.apache /var/www/html/access -R
My virtual host file,
DocumentRoot /var/www/html/
Alias /svnstyle /var/www/html/access
<Directory “/var/www/html/access”>
Options +SymLinksIfOwnerMatch
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<Location /svn>
DAV svn
SVNParentPath /var/lib/repo
AuthType Basic
AuthName “Subversion Repository”
AuthUserFile /etc/apache2/dav.passwd
AuthzSVNAccessFile /etc/apache2/dav.authz
Require valid-user
SVNIndexXSLT /svnstyle/svnindex.xsl
</Location>
Where /var/lib/repo is my repositories holding directory.
/etc/apache2/dav.passwd user file.
/etc/apache2/dav.authz svn access file.
chown apache.apache /var/lib/repo /etc/apache2 -R
Now trigger this url http://<hostname>/access/install in your browser and follow the steps to install.
Note: Admin passwd should be 14 character with small,caps,num,symbols.
After installation go for http://<hostname>/access,
create users , repository, project, give access rights and finally create access file.
Example user and access file,
cat /etc/apache2/dav.passwd
admin:$1$f72982ad$bBzkp3BGhuiHCROc19fGQ1
user1:$1$05b819cd$gEJybiurjmXEWO.z4bmBI/
user2:$1$a4d30094$3D2tLcTxux9qmoHo9NjKw/
user3:$1$86e06758$81irxd8FdZaZN4OWjdRSc.
cat /etc/apache2/dav.authz
[/]
admin = r
[firstrepo:/]
user1 = rw
user2 = r
[secondrepo:/project1]
user1 = r
[secondrepo:/project2]
user2 = rw
user3 = r
Now use any client, I use TortoiseSVN for check out, commits etc to appropriate authenticated repos and projects.
Thanks for reading ..
Cheers /-