软件包安装

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

创建仓库目录

$ sudo mkdir -p /home/abner/svn
$ sudo svnadmin create /home/abner/svn/test_project
$ sudo svnadmin create /home/abner/svn/ops
$ sudo chown -R www-data:www-data /home/abner/svn

修改配置文件

/etc/apache2/mods-available/dav_svn.conf 文件末尾添加如下配置:

<Location /svn>
DAV svn # 启用仓库
SVNListParentPath on # 路径下有多个仓库
SVNParentPath /home/abner/svn # 仓库路径
SVNAdvertiseV2Protocol off # 禁用 V2 协议
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /home/abner/svn/passwd # 用户验证文件
AuthzSVNAccessFile /home/abner/svn/auth # 权限验证文件
Require valid-user # 需要有效用户,禁止匿名访问
</Location>

用户和权限设置

$ sudo htpasswd -c /home/abner/svn/passwd mike
New password:
Re-type new password:
Adding password for user mike
$ cat /home/abner/svn/passwd
mike:$apr1$nfAtmtla$ZguuxNODA.nRu3wsUq1Qv/
$ sudo htpasswd /home/abner/svn/passwd abner # 新增用户,无需 -c 选项
$ cat /home/abner/svn/auth
[groups]
administrator=mike,abner
[test:/]
@administrator=rw
[test_project:/]
@administrator=rw
[ops:/]
@administrator=rw

访问仓库目录

浏览器访问 http://127.0.0.1/svn/

客户端操作

客户端使用 svn 命令拉取代码

$ svn checkout username=abner http://127.0.0.1/svn/ops

更多 htpasswd、svnadmin 和 svn 命令参数和使用请参考man手册

参考

Subversion - Community Help Wiki - Official Ubuntu Documentation