架设基于Apache服务器的SVN版本库

暑假即将全面展开的项目需要版本库的支持,
ClearCase过于庞大,CVS不足太多,我们决定才用Subversion。
但是普通安装的Subversion不能管理用户的权限,这一点老师肯定不能容忍。
查找了下资料Subversion还有一种结合Apache的工作模式通过WebDAV/DeltaV协议访问Repository,
这时版本库地址头就不是svn://了而是http://,
借用Apache管理URL访问权限的那套机制便可以实现权限管理的功能。
简单贴下配置代码:

Apache的httpd.conf
#SVN
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
# SVN 项目配置文件,格式:Include 配置文件名
#为每个虚拟目录设置一个配置文件,用Include命令加载
Include D:/SubversionFiles/conf/*.project
 
XX.project配置例子如下,每个版本库对应一个.project
<Location /Library>
 #SVN项目名
 DAV svn
 #SVN项目的路径
 SVNPath "D:\SubversionFiles\Library"
 #SVN项目的路径权限授权文件存放路径
 AuthzSVNAccessFile "D:/SubversionFiles/conf/Library.access"
 #对于所有用户都需要身份验证
 #Satisfy Any
 #验证方式
 AuthType Basic
 #项目的名称
 AuthName "资料库"
 #用户信息
 AuthUserFile "D:/SubversionFiles/conf/user"
 Require valid-user
</Location>
 
XX.access例子如下,版本库文件夹访问权限就设置在这里
[groups]
g_manager = user1,user2
[/]
@g_manager = rw
[Library:/VIP]
user3 = rw
user4 = r

至于这些user的信息文件,由.project文件里AuthUserFile指定
user信息文件是通过Apache的htpasswd.exe添加的。
 
另外为了安全地设定用户名和密码,俺还专门拿JSP写了个注册页面方便实验室的同僚们注册。
用的就是通过JSP调用外部程序的方法,关键代码:
String username=(String)request.getParameter("userid");
String password=(String)request.getParameter("password");
Process process=Runtime.getRuntime().exec("D:/Program Files/Apache Software Foundation/Apache2.2/Apache2/bin/htpasswd.exe -bm D:/SubversionFiles/conf/user "+username+" "+ password);
posted @ 2007-07-25 22:58  湘西小刁民  阅读(324)  评论(0编辑  收藏  举报