百度空间 | 百度首页 
               
 
查看文章
 
subversion配置-subversion配置及安装方法
2008-07-15 01:14

subversion配置
一、    介绍:
本subversion配置的os是win
二、    需要软件
svn-1.4.4-setup.exe:svn的win下的安装程序
TortoiseSVN-1.4.4.9706-win32-svn-1.4.4.msi:svn的win下的客户端程序
LanguagePack-1.4.4.9706-win32-zh_CN.exe:客户端的中文包
apache_2.0.59-win32-x86-no_ssl.msi:win下的apache的http servce
三、    配置
Subversion服务器有两种运行方式,一是可以作为Apache 2.0的一个模块,以WebDAV/DeltaV协议与外界连通;
另外,也可使用Subversion 自带的小型服务器程序svnserve。该程序使用的是自带的通讯协议,可以很容易地透过SSH。
下面一一介绍:请安装好以上的程序
1.    svnserve:
svnserve是一个轻型的服务器,可以同客户端通过在TCP/IP基础上的自定义有状态协议通讯,客户端通过使用开头为svn://或者svn+ssh://svnserve的URL来访问一个svnserve服务器。
安装好subversion后,进入Subversion的安装目录(通常是C:\Program Files\Subversion)的bin目录,拷贝svnserve.exe、libdb44.dll、libeay32.dll和ssleay32.dll到你的服务器目录,例如c:\svnserve。
运行svnserve,在DOS窗口运行下面的命令:
svnserve.exe –daemon。
svnserve将会在端口3690等待请求,--daemon选项告诉svnserve以守护进程方式运行,这样在手动终止之前不会退出。
如果你没有创建一个版本库,在dos下输入:
Svnadmin –create c:/svnROOT/repository
创建。

为了验证svnserve正常工作,使用TortoiseSVN → 版本库浏览器来查看版本库。
假定你的版本库位于c:/svnROOT/repository,你的服务器叫做localhost,输入:
svn://localhost/svnROOT/repository
当被版本库浏览器提示输入。
你也可以使用--root选项设置根位置来限制服务器的访问目录,从而增加安全性和节约输入svnserve URL的时间:
        svnserve.exe --daemon --root c:\svnROOT
然后TortoiseSVN中的版本库浏览器URL缩减为:
        svn://localhost/repository
如要以服务形式运行svnserve,执行下面的命令,就会创建一个会随windows自动启动的服务:
        sc create svnserve binpath= "c:\svnserve\svnserve.exe --service
        --root c:\svnROOT" displayname= "Subversion" depend= tcpip start= auto

缺省的svnserve设置提供了匿名的只读访问,这意味着你可以使用svn://的URL进行检出和更新,或者使用TortoiseSVN的版本库浏览器查看版本库,但是不能提交任何修改。

为了打开对版本库的写访问,你可以编辑版本库目录的conf/svnserve.conf文件,这个文件控制了svnserve守护进程的配置,也提供了有用的文档。

为了打开匿名的写访问,只需要简单得设置:
        [general]
anon-access = write
然而,你不会知道谁修改了版本库,因为svn:author属性是空的,你也不能控制谁来修改版本库,这是一个很危险的设置。
解决这个问题的一个方法是创建密码数据库:
    [general]
anon-access = none
auth-access = write
password-db = passwd
这里passwd与svnserve.conf文件在同一个目录,这个文件也可以存在于文件系统的其他地方(当多个版本库使用相同的访问权限时尤其有用),并使用绝对路径引用,或者是conf的相对目录,使用\或盘符不能工作。Passwd的结构如下:
        [users]
hh=hh
aa=aa
bb=bb
cc=cc
...
是以username=password书写
                这个例子拒绝所有的未认证用户(匿名)访问,给passwd中的用户读写权限。
                也可以路径为基础的授权,conf/svnserve.conf文件修改为:
                    anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm =Repository   

它们确定未认证(匿名)和认证用户可以做的事情,参数anon-access和auth-access可以设置为none、read或者write,设置为none会限制所有方式的访问,read允许只读访问,而write允许对版本库完全的读/写权限,password-db对应用户文件,authz-db对应目录操作权限文件,realm是你定义的名称,这告诉客户端连接的“认证命名空间”,Subversion会在认证提示里显示,并且作为凭证缓存。

这里authz与svnserve.conf文件在同一个目录,这个文件也可以存在于文件系统的其他地方(当多个版本库使用相同的访问权限时尤其有用),并使用绝对路径引用,或者是conf的相对目录,使用\或盘符不能工作。设置如下:
[groups]
admin=hh
member=aa,bb,cc
[/]
* = r
@admin = rw
[repository:/]
@member=r
[Test1:/]
@member=r

用户组格式:
[groups]
<用户组名> = <用户1>,<用户2>
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。

版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>

其中,方框号内部分可以有多种写法:
/,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为c:/svnROOT/repository。这样,/就是表示对全部版本库设置权限。
repository:/,表示对版本库repository设置权限

权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。
2.    Apache为基础的服务器
Apache和 subversion都安装好后,先检查apache的安装目录下的modules是否有libdb44.dll,mod_dav_svn.so,mod_authz_svn.so,如果没有就到subversion安装目录的bin目录下这3个文件copy到modules,然后编辑apache目录conf下的httpd.conf文件,找到LoadModule dav_fs_module modules/mod_dav_fs.so,LoadModule dav_module modules/mod_dav.so,把前面的#去掉,再在尾部添加如下配置:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules /mod_authz_svn.so
然后添加:
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath "H:/svnROOT"
AuthType Basic
    AuthName "Subversion repositories"
    AuthUserFile "H:/svnROOT/passwd"
    Require valid-user
</Location>
这个配置告诉Apache你的所有的Subversion版本库在物理上位于H:/svnROOT,版本库对外的URL是: http://MyServer/svn/ ,访问需要文件passwd中的用户/密码限制。

为了创建passwd文件,再次打开命令行提示符(DOS),来到apache2目录,过输入下面的命令创建文件:
htpasswd -c h:/svnROOT/passwd hh
New password: **
Re-type new password: **
Adding password for user hh
你会在h:/svnROOT/看到passwd文件
如果你要追加用户用一下命令
htpasswd -m h:/svnROOT/passwd aa
New password: **
Re-type new password: **
Adding password for user aa

重启Apache服务

将浏览器指向http://MyServer/svn/MyNewRepository(MyNewRepository是你此前创建的版本库名),如果一切正常,你会被提示输入用户名和密码,然后你会看到版本库的内容

设置Apache的httpd.conf

<Location /svn>    意思是Subversion版本库的URL是http://MyServer/svn/
DAV svn    告诉Apache是哪个模块响应那个URL的请求-此刻是Subversion模块。
SVNListParentPath on    对于Subversion1.3或者更高版本,这个指示表示显示所有SVNParentPath下的版本库。
SVNParentPath "H:/svnROOT"    告诉Subversion需要查看的版本库位于"H:/svnROOT"之下
AuthType Basic    激活基本认证,就是用户名/密码
AuthName "Subversion repositories"    用来说明何时弹出要求用户输入认证信息的认证对话框
AuthUserFile "H:/svnROOT/passwd"    指定使用的认证密码文件
AuthzSVNAccessFile    位置Subversion版本库的访问控制文件的路径
Require valid-user    指定只有输入了正确的用户/密码的用户可以访问URL

但是那只是一个例子,对于Apache你有很多的选择
如果你希望所有人可以读你的版本库,但是只有特定用户可以写,你可以修改下面几行
Require valid-user

<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>

设置权限:
在location节点里面添加AuthzSVNAccessFile "H:/svnROOT/authz",完整如下:
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath "H:/svnROOT"
AuthzSVNAccessFile "H:/svnROOT/authz"
AuthType Basic
    AuthName "Subversion repositories"
    AuthUserFile "H:/svnROOT/passwd"
    <LimitExcept GET PROPFIND OPTIONS REPORT>
        Satisfy Any
        Require valid-user
    </LimitExcept>
</Location>
此时你需要在H:/svnROOT/目录下有个authz文件,语法和svnserve配置authz文件的语法一样。


类别:电脑硬件 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu