首先运行如下命令安装 Subversion:

$ sudo apt-get install subversion
$ sudo apt-get install libapache2-svn

如果系统报告了依赖关系的错误,找出相应的软件包并安装它们。如果存在其它问题,自行解决。

1.      创建 SVN 仓库

假设Subversion 文件仓库放在 /home/svn,并且项目名称是 “myproject”。

创建一个名为“Subversion”的组来拥有文件仓库所在的目录。

执行如下命令增加组,并且把用户加到组里:

sudo addgroup subversion
sudo usermod -G subversion -a www-data

注销然后再登录以便能够成为 subversion 组的一员

现在执行下面的命令

$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir myproject
$ sudo chown -R root:subversion myproject

创建 SVN 文件仓库

$ sudo svnadmin create /home/svn/myproject

赋予组成员对所有新加入文件仓库的文件拥有相应的权限:

$ sudo chmod -R g+rws myproject

如果上面这个命令在创建SVN文件仓库之前运行,可能在后续Check in的时候遇到如下错误:

Can't open '/home/svn/myproject/db/txn-current-lock': Permission denied

查看txn-current-lock文件的权限和用户以及组信息,应该类似于:

$ ls -l /home/svn/myproject/db/txn-current-lock
-rw-rwSr-- 1 root subversion  0  2009-06-18  15:33  txn-current-lock

除了权限以外,用户及其组如果不对,则仍然会遇到上述问题,可以再次运行命令:

$ sudo chown -R root:subversion myproject

2.     将代码导入版本库:

$ svn import –m “import message” source_file file:///home/svn/myproject(版本库所在目录)

3.      访问方式

1)      直接访问文件仓库(file://)

它不需要事先运行任何 SVN 服务。这种访问方式用于访问本地的 SVN 文件仓库。命令如下:

$ svn co file:///home/svn/myproject

或者$ svn co file://localhost/home/svn/myproject

注意:如果不确定主机的名称,必须使用三个斜杠(///),而如果指定了主机的名称,则必须使用两个斜杠(//).

2)      通过 WebDAV 协议访问(http://)

通过 WebDAV 协议访问 SVN 文件仓库,要配置Apache 2 Web 服务器。加入下面的代码片段到 /etc/apache2/mods-available/dav_svn.conf中:

<Location /svn/myproject>
DAV svn
SVNPath /home/svn/myproject    (/home/svn/myproject 访问版本库路径)
AuthType Basic
AuthName "myproject subversion repository"  (版本库验证时的提示信息)
AuthUserFile /etc/subversion/passwd         (身份验证)
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>

如果需要用户每次登录时都进行用户密码验证,将<LimitExcept GET PROPFIND OPTIONS REPORT>与</LimitExcept>两行注释掉。

加了上面的内容后,输入下面的命令重新启动 Apache 2 Web 服务器:

sudo /etc/init.d/apache2 restart (提示ok即重启成功,否则自行分析原因)

接下来创建 /etc/subversion/passwd 文件,该文件包含了用户授权的详细信息。执行下面的命令添加用户:

sudo htpasswd -c /etc/subversion/passwd user_name

按提示输入密码该用户就建立了。“-c”选项表示创建新的/etc/subversion/passwd文件,所以user_name所指的用户将是文件中唯一的用户。如果要添加其他用户,则去掉“-c”选项:

sudo htpasswd /etc/subversion/passwd other_user_name

通过下面的命令来访问文件仓库:

$ svn co http://hostname/svn/myproject myproject

它会提示输入密码。必须输入使用 htpasswd 设置的密码。当通过验证,项目的文件就被签出了。

3)      通过自带协议访问(svn://)

创建了 SVN 文件仓库后,修改 /home/svn/myproject/conf/svnserve.conf 来配置其访问控制

例如,可以取消下面的注释符号来设置授权机制:

# [general]
# password-db = passwd
# anon-access = read/none  (none代表客户端登录时需要密码)

可以在“passwd”文件中维护用户清单。编辑同一目录下“passwd”文件,添加新用户。语法如下:

username = password   (注意行开始不要有多余空格)

通过如上配置后,可以在本地或者远程通过 svn:// 访问SVN 版本库了,使用“svnserve”来运行 svnserver,

语法如下:

$ svnserve -d --foreground -r /home/svn(要访问版本库,必须保证此命令一直在终端运行)

然后可以通过下面的命令来访问文件仓库:

$ svn co svn://hostname/myproject myproject

按要求输入密码。一旦通过验证,就会签出文件仓库中的代码。

若要进行权限控制,取消/home/svn/myproject/conf/svnserve.conf下#  authz-db = authz 前的# ,并根据实际情况修改/home/svn/myproject/conf下的authz文件,实现不同的权限控制