SVN管理问题解决方法专家指导

本节接着上节继续向大家讲解SVN管理方面的知识,本节以一个测试作为开头讲解,希望通过本节SVN管理的学习大家都能够有所提升。让我们来看一下这个测试。

下面作一个测试:
到F:\SubversionFiles下建立一个子目录Test,然后到Aapche下的Bin目录下执行svnadmincreateF:\SubversionFiles\Test
打开浏览器输入网址:http://localhost:8080/svn/Test,应该可以正确访问,但当前该项目下还没有加入任何内容,所以显示为空的
有一点需要提示的是,现在的访问是完全匿名的,任何人都可以对SVN进行操作。所以我们接下来利用Apache的权限管理功能来对SVN进行用户验证集成。
加入用户身份验证
来看一下SVN管理过程中如何加入用户身份验证。在确定对访问用户的权限控制之前,你必须规划好是对整个资源库中的所有项目还是单独的某一个项目进行统一的身份验证,就是我们前面讲到的是使用SVNParentPath还是SVNPath的问题。
最简单的身份验证方式是使用BasicHTTPAuthentication机制,该方式通过用户名和口令对访问用户进行身份验证。我们可以直接通过Apache提供的支持进行设置。Apache提供一个htpasswd工具来管理用户名和口令。接下来我们利用这个工具来添加两个用户。
在命令行窗口中转到Apache所在的目录,执行下列命令
说明:创建用户Xrinehart
输入:htpasswd–cF:\SubversionFiles\svn_auth_passwdXrinehart
说明:使用-c参数来创建一个passwd文件
输出:
Newpassword:*****
Re-typenewpassword:*****
AddingpasswordforuserXrinehart
再创建用户的时候就不用-c参数,而是用-m参数,因为文件svn_auth_passwd已经创建。
打开svn_auth_passwd文件,密码使用MD5加密过了,而且同样的密码加密出来的内容却不相同
接下来我们必须告诉Apache服务器如何使用这个passwd文件,打开httpd.conf找到刚才我们添加的Location配置的位置,修改如下:
 

 
 
 
  1. #SVN  
  2. DAVsvn  
  3. SVNParentPath"F:/SubversionFiles"  
  4. #howtoauthenticateauser  
  5. AuthTypeBasic  
  6. AuthName"Subversionrepository"  
  7. AuthUserFile"F:/SubversionFiles/svn_auth_passwd"  
  8. #onlyauthenticatedusersmayaccesstherepository  
  9. Requirevalid-user  

重新启动ApacheHTTP服务器,使用浏览器打开http://localhost:8080/svn/Test你将会看到要求登录的对话框,输入你刚设置的用户名和口令即可。这样Apache和SVN的集成就基本告成了
我们已经实现了对SVN和Apache的安装,并将它们集成在一起工作。这一篇则主要介绍如何对SVNForApache进行一些配置。
在Apache下为SVN建立多个库

SVN管理中如何在Apache下为SVN建立多个库上篇中虽然也建立了一个SVN的库在Apache下,但是我们不可能一个SVN服务器上只有一个项目,或者所有项目共用一个SVN库进行开发,在Apache上为SVN建立多个库可以通过建立多个虚拟目录的方式实现。下面我们就来讲讲具体的步骤(注意,此篇中的配置和上篇中的配置方式有很大区别)
到F盘建立我们的SVN代码存放位置目录:SubversionFiles,并在其中建立一个conf目录,将会把对Apache对SVN的配置文件都放在这里.再在F:\SubversionFiles下目录Test1和Test2,并将它们变成SVN库(用svnadmincreate命令或者用TortoiseSVN来创建都可以)
在httpd.conf的最后添加如下代码:
#SVN项目配置文件,格式:Include配置文件名
#为每个虚拟目录设置一个配置文件,用Include命令加载
IncludeF:/SubversionFiles/conf/*.project
即把F:/SubversionFiles/conf/目录下的所有*.project文件都包到httpd.conf中来
在F:/SubversionFiles/conf/创建Test1.project和Test2.project文件,Test1内容如下,Test2可以做相应的修改。
#SVN项目名
DAVsvn
#SVN项目的路径
SVNPathF:\SubversionFiles\Test1
#SVN项目的路径权限授权文件存放路径
AuthzSVNAccessFileF:\SubversionFiles\conf\Test1.access
#对于所有用户都需要身份验证
SatisfyAny
Requirevalid-user
#验证方式
AuthTypeBasic
#项目的名称
AuthName"MyTest1"
#用户信息
AuthUserFileF:\SubversionFiles\conf\user
以上配置含义是在Apache下建立了一个叫作Test1的SVN虚拟目录,指向F:\SubversionFiles\Test1,授权配置文件是F:\SubversionFiles\conf\Test1.access,用户信息和密码文件是F:\SubversionFiles\conf\user
通过以上配置,我们就在Apache上建立了Test1和Test2两个虚拟目录,也就是两个独立的SVN库,我们还需要两个文件访问权限配置的.access和包含登录用户的user。在F:\SubversionFiles\conf目录中创建用户列表文件user,方法在上篇中已经说过,也就是htpasswd命令,我们需要创建Xrinehart,X-Killer,Guest三个用户。
接下来,我们为Test1库创建它的访问权限文件F:\SubversionFiles\conf\Test1.access。在上篇文章中我们是采用对每个用户分别赋予对应权限的方式,如果用户比较多,管理起来就会比较麻烦,这时我们需要用用户组来对用户进行管理。下面我们就来尝试用用户组配置访问权限。Test1.access文件内容如下:
 

 
 
 
  1. [groups]  
  2. AdminGroup=Xrinehart 
  3. GuestGroup=guest 
  4. [/]  
  5. @AdminGroup=rw 
  6. @GuestGroup=r  
  7. X-Killer=rw 

SVN管理在上面的配置中,通过[groups]节定义了两个用户组:AdminGroup和GuestGroup,并将Xrinehart用户归入AdminGroup用户组,guest用户归入GuestGroup。再在下面的[/]定义了他们对Test1库的根目录的操作权限:AdminGroup组有读写权限,GuestGroup组只有读权限,X-Killer用户拥有读写权限。这里需要注意的是定义权限的时候,用户组需要在前面加@符号来标示。
为了测试效果,我们可以将Test2.access文件写为:
 

 
 
 
  1. [groups]  
  2. AdminGroup=Xrinehart,X-Killer  
  3. GuestGroup=guest 
  4. [/]  
  5. @AdminGroup=r  
  6. @GuestGroup=rw 

保存好上面的所有配置文件之后,重新启动Apache服务器。此时我们就可以在IE里面通过http://localhost:8080/Test1和http://localhost:8080/Test2来访问Test1和Test2库了,你可以测试一下,用户权限是否符合下面这个列表所示?做到这里,SVN在Apache上建立多个库的配置也就算完成了。
Test1Test2
Xrinehartrwr
X-Killerrwr
guestrrw本节讲解SVN管理问题完毕,请关注本节其他相关报道。 

【编辑推荐】

  1. SVN管理与应用相关的资料参考手册
  2. 面试中SVN管理知识点全面剖析
  3. ApacheSVN服务器安装指导手册
  4. Windows下SVN服务器搭建新视点
  5. Ubuntu8.10Server中Apache+SVN+SSL配置方法专家解析 
THE END