如果你使用Subversion 1.3或更高版本,可以使用SVNListParentPath on指示,这样当你使用浏览器访问父路径而不是具体某个版本库时就会显示所有版本库列表。
如果你的Subversion是早于1.3的版本,你会得到错误页,为了得到一个更好看的项目列表,你可以使用下面PHP脚本为你自动生成索引。(为了使用下面的PHP,你需要安装PHP)。
<html> <head> <title>Subversion Repositories</title> </head> <body> <h2>Subversion Repositories</h2> <p> <?php $svnparentpath = "C:/svn"; $svnparenturl = "/svn"; $dh = opendir( $svnparentpath ); if( $dh ) { while( $dir = readdir( $dh ) ) { $svndir = $svnparentpath . "/" . $dir; $svndbdir = $svndir . "/db"; $svnfstypefile = $svndbdir . "/fs-type"; if( is_dir( $svndir ) && is_dir( $svndbdir ) ) { echo "<a href=\"" . $svnparenturl . "/" . $dir . "\">" . $dir . "</a>\n"; if( file_exists( $svnfstypefile ) ) { $handle = fopen ("$svnfstypefile", "r"); $buffer = fgets($handle, 4096); fclose( $handle ); $buffer = chop( $buffer ); if( strcmp( $buffer, "fsfs" )==0 ) { echo " (FSFS) <br />\n"; } else { echo " (BDB) <br />\n"; } } else { echo " (BDB) <br />\n"; } } } closedir( $dh ); } ?> </p> </body> </html>
-
去掉Apache配置文件中下面这一行的注释(去掉字符'#'):
#LoadModule rewrite_module modules/mod_rewrite.so
-
在你的<Location>里定义Subversion功能的下面增加如下几行:
RewriteEngine on RewriteRule ^/svn$ /svn_index.php [PT] RewriteRule ^/svn/$ /svn_index.php [PT] RewriteRule ^/svn/index.html$ /svn_index.php [PT]
3.1.6. 路径为基础的授权
mod_authz_svn模块可以根据用户名和路径实现细粒度的权限控制,对所有的Apache服务器有效,在Subversion 1.3以上版本的svnserve上也实现了路径为基础的授权。
一个可能的例子:
[groups] admin = john, kate devteam1 = john, rachel, sally devteam2 = kate, peter, mark docs = bob, jane, mike training = zak # Default access rule for ALL repositories # Everyone can read, admins can write, Dan German is excluded. [/] * = r @admin = rw dangerman = # Allow developers complete access to their project repos [proj1:/] @devteam1 = rw [proj2:/] @devteam2 = rw [bigproj:/] @devteam1 = rw @devteam2 = rw trevor = rw # Give the doc people write access to all the docs folders [/trunk/doc] @docs = rw # Give trainees write access in the training repository only [TrainingRepos:/] @training = rw
请注意,检查每一条路径是一件消耗极大的操作,特别是修订版本日志,服务器会检查在每一个修订版本的每一条路径是否可读,对于影响很多文件的修订将会花费很多时间。
认证和授权是不同的过程,如果用户希望获得对版本库的访问,他需要同时实现这两个步骤,对于要访问文件的普通认证请求和授权请求。
3.1.7. 使用Windows域认证
你已经注意到了,你需要为每个用户在passwd文件中创建用户名/密码条目,如果(因为安全原因)他们希望周期性的修改他们的密码,你需要手动的做出修改。
但是对于此问题有另一个解决方案-至少是你在使用域控制器的LAN中访问版本库时:mod_auth_sspi!
最初的SSPI是由Syneapps提供的,包括源代码,但是此开发已经终止,不过不要失望,社区重新拾起代码并进行了改进,它现在的新主页在SourceForge。
-
下载这个模块,将文件
mod_auth_sspi.so拷贝到Apache的modules目录。 -
编辑Apache的配置文件:增加行
