1、安装SVN server

sudo apt-get install subversion

2、创建数据仓库

svnadmin create /home/svn/qasvn
svnadmin create /home/svn/test
可以根据需要建立不同的数据仓库

3、启动svn网络服务

svnserve -d -r /home/svn
其中 -d 参数让 svnserve 运行在后台,-r 参数限定了数据仓库,在网络上可以访问的地址。
/home/svn指定svn数据仓库存放的目录位置

4、设置svn: 方式的访问权限

在每个数据仓库目录下都有一堆目录,进入 conf 并打开 svnserve.conf 这个文件,找到以下几行,
并把前面的注解符号 ‘#’ 去掉,注意千万在每行的前面别留任何空格。
anon-access = read
auth-access = write
password-db = passwd
其中 anon-access 和 auth-access 分别为匿名和有权限用户的权限,默认给匿名用户只读的权限。
但如果想拒绝匿名用户的访问,只需把 anon-access的read 改成 none 就能达到目的。
password-db 后的 passwd 则为定义用户名及密码的文件路径。这个文件默认跟 snvserve.conf 在
同一个目录,下面看看怎么配置 passwd文件中的内容。
[user]
# harry = harryssecret
# sally = sallyssecret
harry 和 sally 这两行分别定义了可以对 repo 进行写入的用户的用户名和密码。我们可以在下面加上
自己的用户名和密码,比如
testsvn = tester
这样就给了用户 testsvn 往 repo 中写的权限。存盘退出后,svn 服务器就算正式可以运行了!
把所有需要管理的项目都放在 /home/svn这个目录下,像正常那样用 svnadmin create 命令建立数据
仓库这样就可以使用svn客户端通过svn://地址/数据仓库目录 的方式访问各个数据仓库了

5、在Apache 中部署Subversion

安装启用mod_dav 和 mov_dav_svn 这两个模块
sudo apt-get install libapache2-svn
确定 mod_dav 和 mod_dav_svn 被打开
a2enmod dav dav_svn
修改 /etc/apache2/conf 下的 httpd.conf,加入如下代码:
<Location /svn>
DAV svn
SVNParentPath /home/svnproject
</Location>
这样就可以通过 http://地址url/svn 访问/home/svnproject下的数据仓库了

SVNParentPath和SVNPath的区别

SVNParentPath:支持多个具备相同父目录的Subversion版本库。
SVNPath:只支持一个父目录的Subversion版本库

SVNPath   /svn/repository/project1 #如果你想对每个项目单独配置,使用该项

SVNParentPath  /svn/repository #设定一个根,所有项目均放在此目录下

6、设定用户的权限和验证

htpasswd -cmb /home/passwdfile/passwords user1 pass1
注意/home/passwdfile这个目录必须存在

当再次添加一个用户和密码时,htpasswd命令就无须加'-c'参数了,'-c'代表新建一个文件,如果再次添
加用户时,又加了-c 则上一个用户将被覆盖掉
然后回到我们在 httpd.conf 中添加的代码,修改一下:
<Location /svn>
DAV svn
SVNParentPath /home/svn
AuthType Basic
AuthName "Test Repository"
AuthUserFile /home/passwdfile/passwords
Require valid-user
</Location>
最后,你需要把 repo 所在的目录和文件的所有权都改成系统中操作 Apache 的用户,这样在 commit
的时候才会被 Apache 认可。在 Ubuntu 中,这个用户叫 www-data
sudo chown -R www-data /home/svnproject