技术开发 频道

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

【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);

0
相关文章