【IT168 技术文章】
全面展开的项目需要版本库的支持,
ClearCase过于庞大,CVS不足太多,我们决定才用Subversion。
但是普通安装的Subversion不能管理用户的权限,这一点老师肯定不能容忍。
查找了下资料Subversion还有一种结合Apache的工作模式通过WebDAV/DeltaV协议访问Repository,
这时版本库地址头就不是svn://了而是http://,
借用Apache管理URL访问权限的那套机制便可以实现权限管理的功能。
简单贴下配置代码:
Apache的httpd.conf
#SVN
LoadModuledav_modulemodules/mod_dav.so
LoadModuledav_fs_modulemodules/mod_dav_fs.so
LoadModuledav_svn_modulemodules/mod_dav_svn.so
LoadModuleauthz_svn_modulemodules/mod_authz_svn.so
#SVN项目配置文件,格式:Include配置文件名
#为每个虚拟目录设置一个配置文件,用Include命令加载
IncludeD:/SubversionFiles/conf/*.project
XX.project配置例子如下,每个版本库对应一个.project
<Location/Library>
#SVN项目名
DAVsvn
#SVN项目的路径
SVNPath"D:\SubversionFiles\Library"
#SVN项目的路径权限授权文件存放路径
AuthzSVNAccessFile"D:/SubversionFiles/conf/Library.access"
#对于所有用户都需要身份验证
#SatisfyAny
#验证方式
AuthTypeBasic
#项目的名称
AuthName"资料库"
#用户信息
AuthUserFile"D:/SubversionFiles/conf/user"
Requirevalid-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调用外部程序的方法,关键代码:
Stringusername=(String)request.getParameter("userid");
Stringpassword=(String)request.getParameter("password");
Processprocess=Runtime.getRuntime().exec("D:/ProgramFiles/ApacheSoftwareFoundation/Apache2.2/Apache2/bin/htpasswd.exe-bmD:/SubversionFiles/conf/user"+username+""+password);