How to have InDefero controlling the Subversion access rights
Plugin SyncSvn by Baptiste Michaud
The SyncSvn plugin allow the direct creation and synchronisation of subversion repositories with the InDefero database. This requires giving access to the repositories using the DAV_SVN module of Apache2.
To Contact the Author
Baptiste Michaud
bactisme@gmail.com
webplay.fr - frandroid.com - lost-in-translation.fr
Apache configuration
You will first need to install the DAV_SVN module for Apache. On Debian/Ubuntu based systems just run:
$ sudo apt-get install libapache2-svn
$ sudo a2enmod dav_svn
Then, you need to configure dav_svn, this is an example of configuration:
<Location /svn>
DAV svn
SVNParentPath /home/svn/repositories
AuthzSVNAccessFile /home/svn/dav_svn.authz
Satisfy Any
Require valid-user
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /home/svn/dav_svn.passwd
</Location>
Be sure to read the documentation before.
The files /home/svn/dav_svn.authz
, /home/svn/dav_svn.passwd
and
the directory /home/svn/repositories
must be writable by your
webserver process. To ensure that, do:
$ sudo mkdir --parents /home/svn/repositories
$ sudo touch /home/svn/dav_svn.authz
$ sudo touch /home/svn/dav_svn.passwd
$ sudo chown -R www-data:www-data /home/svn
Now, you need to restart apache:
$ sudo /etc/init.d/apache2 force-reload
InDefero Configuration
First, you need to install the File_Passwd PEAR package:
$ sudo pear install File_Passwd
Then, based on the paths provided in the Apache configuration and if
your Apache server is serving the domain www.mydomain.com
, the you
need to put the following in your configuration file:
$cfg['svn_repositories'] = 'file:///home/svn/repositories/%s';
// We add "trunk" to invite people to checkout the trunk of the
// project.
$cfg['svn_remote_url'] = 'http://www.mydomain.com/svn/%s/trunk';
// Synchronisation specific configuration variables
$cfg['idf_plugin_syncsvn_authz_file'] = '/home/svn/dav_svn.authz';
$cfg['idf_plugin_syncsvn_passwd_file'] = '/home/svn/dav_svn.passwd';
$cfg['idf_plugin_syncsvn_svn_path'] = '/home/svn/repositories';
// Delete the corresponding repository when deleting the project
$cfg['idf_plugin_syncsvn_remove_orphans'] = false;
You can have more control over the permissions given to the owners, members, extra authorized users and anonymous users if you want with the following configuration variables:
- idf_plugin_syncsvn_access_owners ('rw'): Access for the project owners.
- idf_plugin_syncsvn_access_members ('rw'): Access for the project members.
- idf_plugin_syncsvn_access_extra ('r'): Access for the extra authorized people in case of a private project.
- idf_plugin_syncsvn_access_public ('r'): Anonymous access.
- idf_plugin_syncsvn_access_private (''): Anonymous access in the case of a private project.
svn: Can't open file '/root/.subversion/servers': Permission denied error
If you get the error:
svn: Can't open file '/root/.subversion/servers': Permission denied
Check the fix available
Read more
Check also InstallationScmGit and InstallationScmMercurial.