SVN with web View -- Gentoo Build
Recently, I've found a need to keep track of a lot of documents and configs of devices. I've also had a need to version control some of my documents and code.
Under Gentoo when you install SVN server it automatically sets the repository location at "/var/svn" If you want this to be on a separate volume, you'll need to set up a mount point before the install.
SVN has two DB options :-
- Berkeley DB
I want to use FSFS, so add the "-berkdb" use flag to your /etc/make.conf You can find the benefits/weakness of each hear.
I also want to build SVN with Apache, for the SVN DAV. So make sure /etc/make.conf contains the apache2 use flag To install :
# emerge --config =dev-vcs/subversion-1.6.11 # emerge -a mod_python
After the install fix the permissions, as they may be broken.
# groupadd svnusers # chown -R root:svnusers /var/svn/repos # chmod -Rf go-rwx /var/svn/conf # chmod -Rf g-w,o-rwx /var/svn/repos # chmod -Rf g+rw /var/svn/repos/db # chmod -Rf g+rw /var/svn/repos/locks</em>
Start the server :
# /etc/init.d/svnserve start
Lets get apache configured to support SVN
# nano /etc/conf.d/apache2 find the line "APACHE2_OPTS=" Add in "-D DAV -D SVN -D PYTHON -D PHP"
# /etc/init.d/apache2 start
Install WebSVN Add use flags "enscript" to /etc/make.conf and emege the package :
# emerge -av websvn
Create a repository :
# svnadmin create --fs-type fsfs /var/svn/REPOSITORYNAME
Edit Apache default vhost
# nano /etc/apache2/vhosts.d/00_default_vhost.conf
This will expose all repositories. Add the following:-
<Location /svn> DAV svn SVNParentPath /var/svn </Location>
Note the above config is very insecure, by default all can read/write and all clients can connect with out auth. For me this is by design as my SVN host is fire-walled off from everything but internal LAN clients.
Edit websvn :
# nano /var/www/localhost/htdocs/websvn/include/config.php
Since I want to expose all my repositories I need to uncomment and change the following line to set my SVN path :
Also edit and uncomment the following line to enable enscript