使用mod_dav_svn模块访问SVN仓库方法揭秘

开发 项目管理
在学习SVN的过程中,你可能会遇到使用mod_dav_svn访问SVN仓库问题,在这里和大家分享一下,希望通过本文的学习大家对使用mod_dav_svn访问SVN仓库方法有所了解。

本节向大家简单介绍一下使用mod_dav_svn访问SVN仓库的方法,主要有四个步骤,和大家一起学习一下,希望本节使用mod_dav_svn访问SVN仓库方法介绍对你的学习与所帮助。
在前面的日志中,讲述了如何使用Subversion提供的svnserve服务,通过svn://协议访问远端的仓库数据。实际上,Subversion的设计包括了一个抽象的网络层,这意味着版本库是可以通过各种服务器进程访问的。理论上来会说,Subversion可以使用无限数量的网络协议来实现,甚至可以直接用perl利用相关的接口来编写自定义协议。但日常中,用得最多的就是svn://协议,和用mod_dav_svn模块通过Apache服务进行访问SVN仓库。
通过HTTP协议访问版本库是Subversion的亮点之一,这种方式具备许多svnserve服务器所没有的特性,使用上更加灵活。

一、关于mod_dav_svn模块
在介绍使用mod_dav_svn访问SVN仓库之前首先介绍一下mod_dav_svn模块。由于Subversion需要版本化的控制,因此标准的HTTP协议不能满足需求。要让Apache与Subversion协同工作,就要使用WebDAV(Web-basedDistributedAuthoringandVersiong)Web分布式创作和版本控制协议。WebDAV是HTTP1.1的扩展,关于WebDAV的规范和工作原理,可以参考IETFRFC2518。
mod_dav_san模块就是作为Subversion与Apache之间的接口,通过它,Apache就可以访问版本库,并且可以让客户端也使用HTTP的扩展协议WebDAV/DeltaV进行访问。

二、安装和配置
1、准备
与单纯的svnserve不同,要通过Apache访问Subversion,除了必须已经部署好Apache和Subversion的基本环境外,当然不可缺少的是mod_dav_svn模块了:
 
引用
#rpm-qa|grepsvn
mod_dav_svn-1.4.2-2.1AX

2、创建版本仓库
这与以前的工作是基本相同的,不同点在于,需要让运行Apache的用户拥有该仓库的所有权:
 #mkdir/var/www/svn
#cd/var/www/svn/
#svnadmincreatestuff
#chown-Rapache.apachestuff/这样,就创建了一个stuff仓库,并让apache称为该仓库宿主。

3、修改Apache配置
mod_dav_svn访问SVN仓库时需要修改Apache配置,需要先激活Apache加载mod_dav_svn模块。
修改/etc/httpd/conf.d/subversion.conf配置文件的内容为:
#加载相应的模块
 
引用
LoadModuledav_svn_modulemodules/mod_dav_svn.so
LoadModuleauthz_svn_modulemodules/mod_authz_svn.so
<Location/repos>
DAVsvn
SVNPath/var/www/svn/stuff
</Location>
重新启动httpd服务后,通过浏览器访问http://ip/repos,即可看到如下界面:

4、加入认证信息
mod_dav_svn访问SVN仓库要加入认证信息。上面定义的版本仓库,默认是任何人都可以匿名访问,并且拥有完全的写入、读取、修改、提交、删除版本库中信息的权限。
因此,我们需要加入认证信息以做权限的管理。HTTP协议版本就提供了简单的客户端认证方式,这可通过Apache配置完成。Apache提供了一个htpasswd工具来管理,使用该工具可以创建一个文件,其中存放着用户名和加密后的密码信息。而这些就是Subversion可以引用的用户了,根据这些用户信息,配合mod_authz_svn模块即可进行目录的访问控制。

a、创建存放用户名信息的文件
用htpasswd命令创建文件:

引用
#mkdir/etc/svn
#htpasswd-c/etc/svn/svnusers.conflinuxing
Newpassword:
Re-typenewpassword:
Addingpasswordforuserlinuxing
还可以利用htpasswd添加用户,或修改密码,删除用户名等:

 #htpasswd-m/etc/svn/svnusers.confNewUserName
#htpasswd-m/etc/svn/svnusers.confOldUserName
#htpasswd-D/etc/svn/svnusers.confOldUserName
-m是可选的参数,当用-c创建用户名信息文件后,即可修改或添加用户信息。

b、修改/etc/httpd/conf.d/subversion.conf配置文件
在配置文件的Location标签部分,加入:
 
引用
#除了下面的动作需要认证外,其他动作不需验证
<LimitExceptGETPROPFINDOPTIONSREPORT>
AuthTypeBasic#使用基本认证方式,即用户名、密码认证
AuthName"AuthorizationRealm"#在认证对话框中出现的提示信息
AuthUserFile/etc/svn/svnusers.conf#指定上面创建好的存放用户名信息的文件路径
Requirevalid-user#限定只有用户输入正确的用户名和密码后才能访问该标签所指向的路径
</LimitExcept>
该标签定义了,当进行除了指定的若干动作需要进行用户名和密码的认证后才能进行外,其他的动作是不做限制的。例如:只有认证用户可以写操作,同时也允许匿名的读取操作。
也可以使用<Limit>标签对特定的动作进行认证控制,甚至完全不用<Limit>或<LimitExcept>标签,表示对所有的动作进行控制。此外,定义“Requirelinuxinghanry”的写法,可实现将只有用户信息文件中特定的linuxing和hanry用户才能通过认证。
重启httpd服务后,可使用浏览器或svn客户端对该认证工作进行验证。请期待下节有关使用mod_dav_svn访问SVN仓库内容介绍。
 

【编辑推荐】

  1. Http访问SVN服务器的配置方法专家指导
  2. 两种方法轻松访问SVN库
  3. 通过Apache访问SVN代码库配置专家讲解
  4. Http访问SVN服务器配置方法大调查
  5. 术语汇编 SVN代码库简介

 

 

责任编辑:佚名 来源: svn8.com
相关推荐

2010-05-31 19:02:17

访问SVN

2010-06-02 16:19:28

SVN协议

2010-05-20 18:52:06

Eclipse使用SV

2010-05-31 13:00:49

MyEclipse配置

2010-06-02 14:41:46

SVN建库

2010-05-24 12:53:38

子命令SVN merg

2010-06-01 09:54:23

SVN客户端安装

2010-06-01 17:03:59

SVN用户

2010-05-26 18:52:12

SVN库

2010-05-28 18:53:36

配置SVN1.4.5

2010-05-25 17:35:12

SVN代理

2010-06-01 15:00:00

SVN仓库

2011-07-26 17:47:13

2010-05-25 16:52:39

SVN中使用Git

2010-06-01 19:55:30

SVN使用

2010-05-20 10:04:05

集成MyEclipse

2010-02-03 13:26:54

Linux SVN

2010-05-31 14:06:24

SVN同步测试服务器

2010-05-20 17:06:48

SVN CO

2010-05-24 10:29:51

子命令Svn reve
点赞
收藏

51CTO技术栈公众号