用 mod_authz_svn 进行目录访问控制
<Location /svn>
DAV svn
SVNParentPath D:/svn/repository
AuthzSVNAccessFile D:/passwd/policy
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile D:/passwd/passwords
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
AuthzSVNAccessFile 指向的是 authz 的策略文件,详细的权限控制可以在这个策略文件中指定。访问文件 accesspolicy.conf 的语法与svnserve.conf和 Apache 的配置文件非常相似,以(#)开头的行会被忽略;在它的简单形式里,每一小节命名一个版本库和一个里面的路径;认证用户名是在每个小节中的选项名;每个选项的值描述了用户访问版本库的级别:r(只读)或者rw(读写),如果用户没有提到或者值留空,访问是不允许的; * 表示所有用户,用它控制匿名用户的访问权限;@符号区分组和用户。使用 SVNParentPath 代替 SVNPath 来指定多个版本库的父目录时,其中所有的版本库都将按照这个策略文件配置。例如上例中 tony 将对所有版本库里的 /tags 目录具有读写权限。如果要对具体每个版本库配置,用如下的语法:
[groups]
developers=michael,mike
testers=admin
[subsvn:/]
*=r // 这里不允许出现“@testers=”这样的写法,即testers没有读和写的权限。
@developers=rw
[helloworld:/]
*=r
@developers=rw
这样developers组能对subsvn和helloworld版本库下的文件具有读写的权限,而testers组织拥有两个版本库的读权限。