Initial Subversion Installation
Subversion will be a part of Debian 'sarge'. It is not a part of Debian 'woody'. However, a package has been backported:
deb http://people.debian.org/~cjwatson/subversion-woody/ ./
Install Subversion and related libraries:
daystrom:/root# apt-get install subversion subversion-tools
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
db4.1-util libapr0 libdb4.1 libneon23 libsvn0 libswig1.3
python2.1-subversion
The following NEW packages will be installed:
db4.1-util libapr0 libdb4.1 libneon23 libsvn0 libswig1.3
python2.1-subversion subversion subversion-tools
0 packages upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
Need to get 2122kB/3768kB of archives. After unpacking 11.6MB will be used.
Do you want to continue? [Y/n]I use a "public services" model on my server, meaning that I put the public services all in the same group. Since I'm the only one on the server, it simplifies administration.
daystrom:/opt/public# useradd -g public -G public -d /opt/public/svn -s/bin/ksh -c "Subversion User" svn
The Subversion home directory is also the place that the repositories will be stored. It will be owned svn:public so users in the public group can have access to the directory:
daystrom:/opt/public# mkdir svn daystrom:/opt/public# chown svn:public svn daystrom:/opt/public# chmod 2775 svn:public svn
It's important to set the gid bit (that's the '2', above) so that files created in the directory will automatically have the correct group, in this case 'public'.
I intend to use svnserve over ssh. The INSTALL manual has this to say:
As of svn 0.16, we have a new repository-access implementation,
libsvn_ra_svn (on the client side) and the 'svnserve' process on
the server. This is a simple network layer that speaks a custom
protocol over plain TCP (documented in libsvn_ra_svn/protocol):
$ svnserve -d # becomes a background daemon
$ svn checkout svn://localhost/usr/local/svn/repository
You can use the "-r" option to svnserve to set a logical root
for repositories, and the "-R" option to restrict connections to
read-only access. ("Read-only" is a logical term here; svnserve
still needs write access to the database in this mode, but will
not allow commits or revprop changes.)
(Expect the server invocation options to change incompatibly
before they are finalized.)
For now, svnserve in daemon mode only supports anonymous access.
But you can also tunnel ra_svn over ssh or any similar tool:
$ svn checkout svn+ssh://hostname/usr/local/svn/repository
In this mode of operation, there is no svnserve daemon process;
the svn client will ssh to the server and run "svnserve -t" to
do the serving. Make sure svnserve is in your path on the
server. You can override the "ssh" command with the SVN_SSH
environment variable, or you can define new tunnel schemes in
the [tunnels] section of ~/.subversion/config. By default, only
the "ssh" scheme is allowed.The new-for-0.16 svn+ssh access model is much like CVS using the CVS_RSH access. It's all I need for now.