Subversion Backend Selection and Authentication Configuration

After a few DB corruption and journal recovering with the Berkley DB backend I strongly advise you to use the filesystem based backend instead. I think it is by now the default, but to be sure set it on the command line. By the way here is a comparison of the different backends. Personally I like the fact that if needed the repository data can be manipulated by standard tools.

svndadmin create --fs-type fsfs repo

Once the repository is created you can add your files.

svn import . file:///home/svn/repo -m "Initial commit."

Authentication with svnserve (from the docs)

The default svnserve setup provides anonymous read-only access. This means that you can use a svn:// URL to checkout and update, or use the repo-browser in TortoiseSVN to view the repository, but you won’t be able to commit any changes.

To enable write access to a repository, you need to edit the conf/svnserve.conf file in your repository directory. This file controls the configuration of the svnserve daemon, and also contains useful documentation.

You can enable anonymous write access by simply setting:

[general]
anon-access = write

However, you will not know who has made changes to a repository, as the svn:author property will be empty. You will also be unable to control who makes changes to a repository. This is a somewhat risky setup!

One way to overcome this is to create a password database:

[general]
anon-access = none
auth-access = write
password-db = userfile

Where userfile is a file which exists in the same directory as svnserve.conf. This file can live elsewhere in your file system (useful for when you have multiple repositories which require the same access rights) and may be referenced using an absolute path, or a path relative to the conf directory. The userfile should have a structure of:

[users]
username = password
...

This example would deny all access for unauthenticated (anonymous) users, and give read-write access to users listed in userfile.

Just in case you do not already know, there is an ebook online which covers Subversion in depth.

Marc