原理如下,利用apache服务访问svn服务器,在apache服务启动时,加载svn启动库,客户就可以通过webdav的方式访问了。Svn启动时 需要必须加载的库是mod_dav_svn.so,如果需要对访问的repository进行用户和目录的权限设置,则需要 mod_authz_svn.so库。这两个库都在%subversion%/bin目录下,先把这两个文件拷入到%apache%/modules目录 下。
物理文件准备完毕,修改%apache%/conf/下面的httpd.conf文件。可以看到
# LoadModule dav_module modules/mod_dav.so
也就是说,apache默认启动不是以webdav方式,去掉#,再下面添加如下两行
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
现在apache启动时会加载上面三个so。
在文件末尾加上如下内容,下面是比较简单的配置:
<Location /repos> # "/repos"是在url上指定的访问路径,客户访问需要键入这个路径。
DAV svn # 声明svn
SVNPath E:/svn # "E:/svn"是服务器上svn的repository的目录。
# SVNParentPath E:/svn # 对于一个目录下存在多个工程的情况,可以声明这个变量。
# 在apache中配置svn有两种,可以混合使用,一种是apache自身的认证机制,
# 对进入/repos目录的用户进行统一认证,
# 一种是应用svn的认证,可以深入到目录级别进行权限控制,
# 和svn独立启动时设置权限一样。
### apache auth begin
AuthType Basic
AuthName "Subversion repository" # 认证的名字
AuthUserFile D:/svn_auth_file # D:/svn_auth_file里面存放的是使用htpasswd -m D:/svn_auth_file user
# 生成的用户名与密码的加密文件。注意,此处的路径不能有空格。
Require valid-user # 声明,必须是有效的用户才可以访问
### apache auth end
### svn auth begin
AuthzSVNAccessFile D:/svn_authz # D:/svn_authz文件是根据%respository%/conf/authz的规则编写,其实就
# 是svn对用户权限读取的文件格式,mod_authz_svn.so要求的格式。
# SVNIndexXSLT "d:/svnindex.xsl" # d:/svnindex.xsl是用户可以自定义的显示模版,设计好模板,html上的显
# 会更漂亮。
# authentication if necessary.
Satisfy Any # 字面翻译是:都要满足,是声明用户要满足条件
Require valid-user # 声明,必须是有效的用户才可以访问
### svn auth end
</Location>
这时,通过 http://serverip/repos 可以根据设定好的权限进行访问,访问时可以看到最新的版本号,如何让http访问的时候也可以像cvs那样看到更多的内容,老的版本,比较信息呢?可以使 用viewvc来做,原来viewvc支持cvs,现在,也已经开始支持subversion了。
配置结束了,使用apache启动svn服务其实是加载了svn的库,我们看到,此种方式下,对svn的权限设置不同于svn独立模式的要求,用不上 svn自己的配置,但配置要求都是一样的格式,都是svn的核心认证库modmod_authz_svn.so在决定内容。只是不同的启动方式而已。
from: http://magnetocn.bokee.com/viewdiary.10973859.html