SVN版本控制运行的两种模式详解

本节继续和大家一起学习一下SVN版本控制,本节主要学习SVN版本控制运行的两种模式,分别是以Stand-alone模式运行和以Apache的模块方式运行两种,欢迎大家一起来学习SVN版本控制运行的两种模式。首先我们来看一下什么是SVN。

SVN全名Subversion,即版本控制系统。SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括了程序源码。下面是SVN版本控制运行的两种模式中第一种模式介绍。
*************************
◆以Stand-alone模式运行◆
*************************

6.从命令行启动SVNServer:

1.cmd
2.svnserve-d-r%SVN_REPO_PARENT%
注意里面的参数r限定了浏览全部数据仓库的根目录。当然如果觉得每次这样启动太麻烦的话,也有SVNServeice的包装程序(http://dark.clansoft.dk/~mbn/svnservice/)。通过它能够以windowsservice的方式运行SVNServer(其本质还是Stand-alone),运行起来相对比较方便。

7.创建用户数据库(其实就是一个txt文本,就叫它”users.conf”吧,你也可以改名),保存到
%SVN_REPO_PARENT%"%PROJECT_NAME%"conf
目录(那个conf子文件夹在创建数据仓库时已被自动创建好),然后在这个文件内添加需要的用户名和密码。基本的样例如下:
1.[users]
2.your_username=your_password 注意这里密码是明文存放的,所以也是这种方式的不足之处。

8.在”%SVN_REPO_PARENT%"%PROJECT_NAME%"conf”目录下找到这个”svnserve.conf”文件,用任何文本编辑器打开,为刚才创建的那些用户添加读写权限:
1.[general]
2.anon-access=none#匿名访问权限
3.auth-access=write#认证用户的权限
4.password-db=users.conf#认证用户数据库
5.realm=Anythingyouwant,butgenerallyweuse"%PROJECT_NAME%"#在用户认证界面上出现的提示语句里面的”users.conf”就是刚才在第7步创建的用户文件。

9.最后,重启SVNServer(什么?你不知道怎么重启?关掉窗口再重新用命令行启动啦;包装成Service的话么就更加简单了)现在已经可以使用客户端来连接SVNServer,进行import等操作了。连接Server的URL应该是类似这样的:
1.svn://%SERVER_NAME_OR_IP%/%PROJECT_NAME%
具体步骤,请参阅第20步。下面是SVN版本控制运行的两种模式中第二种模式。
************************
◆以Apache的模块方式运行◆
************************

10.首先要了解的是SVN设计的时候只考虑了兼容Apache2.x,所以在Apache1.x下是不能正常工作的。

11.安装Apache2
如果事先启动了IIS之类的其他webserver,请先停止那些服务(端口被占用会导致Apache安装失败)。其他问题可以参考Apache的安装手册。这里假设安装目录为:%APACHE_HOME%

12.检查Apache2的安装是否成功
打开浏览器,访问:http://localhost/,如果出现的是默认的欢迎页面,那就没有问题了。否则请仔细检查,重新安装。

13.打开Apache的配置文件:“%APACHE_HOME%"conf"httpd.conf”,查找”LoadModule”这个关键字,找到导入模块的区块(section)反注释掉下面这样,
从而加载Subversion所需要的DAV模块:
1.#LoadModuledav_modulemodules/mod_dav.so完成之后看起来应该是这样:
1.LoadModuledav_modulemodules/mod_dav.so
另外在这行下面再添加两行(请注意把路径中的”"”替换成”/”):
1.LoadModuledav_svn_module%SVN_HOME%/bin/mod_dav_svn.so
2.LoadModuleauthz_svn_module%SVN_HOME%/bin/mod_authz_svn.so
特别需要注意的是:由于模块依赖关系,这三行的出现顺序千万不能颠倒。

我们继续看SVN版本控制在Apache的模块方式运行方法介绍。

14.再来配置一下”httpd.conf”的其他部分,告诉Apache2SVN的数据仓库所在。(为避免不必要的麻烦,所有路径中的”"”都请替换成”/”)
注意:
・按照下述配置,所有数据仓库将共享密码文件及权限文件
・如果需要为每个数据仓库创建独立的设置,请查阅SVN的文档(”AuthorizationOption”章节)
添加下述内容:

1.<Location/svn> 


2.  


3.DAVsvn  


4.SVNParentPath%SVN_REPO_PARENT%  


6.#设置通过浏览器访问Repository时的XML格式文件,可以省略  


7.SVNIndexXSLT"/svnindex.xsl"  


8.  


9.#存取权限控制文件所在地  


10.AuthzSVNAccessFile%SVN_REPO_PARENT%/AccessFile  


11.  


12.#先尝试匿名操作,如有必要再转向用户认证  


13.SatisfyAny  


14.Requirevalid-user  


15.  


16.#如何验证用户  


17.AuthTypeBasic  


18.AuthName"Anythingyouwant,butgenerallyweuse%PROJECT_NAME%"  


19.AuthUserFile%SVN_REPO_PARENT%/passwd  


20.  


21.#输出时调用Apache的Deflate模块,必须有启用此模块才能这样配,否则删除此行  


22.SetOutputFilterDEFLATE  


23.  



24.Location> 

这里涉及到两个文件:“%SVN_REPO_PARENT%/AccessFile”及“%SVN_REPO_PARENT%/passwd”.并不一定非要放到”%SVN_REPO_PARENT%”目录下,我图方便而已。觉得不安全可以移到另外地方。这两个文件里面具体内容的设置请参考第16和17步。

15.保存”httpd.conf”并退出,这里Apache2的配置告一段落。

16.”%SVN_REPO_PARENT%/AccessFile”文件的内容
1.[/]
2.*=r
3.user1=rw
4.user2=r
5.admin=rw
6.[%PROJECT_NAME%:/src/test]
7.user2=rw
其中:
・[/]指代所有数据仓库的根目录,匿名用户默认的权限为只读。
・对于”user1″和”admin”,他们对所有数据仓库都有读写权限。
・对于”user2″,它对所有数据仓库仅有只读权限。但是下方又额外指定了他对”%PROJECT_NAME%:/src/test”目录具有读写权限。
・综上,他对’test’目录及其子目录(自动继承,除非特别指定)具有读写权限,其他则均为只读权限。你可以根据需要来设定不同的权限,更详细的说明还需要参考SVN文档中的权限设置章节。

17.”%SVN_REPO_PARENT%/passwd”文件的内容
这个文件是通过”%APACHE_HOME%"bin"htpasswd.exe”自动生成的:
1.cmd
2.cd/D%APACHE_HOME%"bin
3.#参数c仅在第一次运行时使用,用来创建一个新文件
4.htpasswdCcm%SVN_REPO_PARENT%"passwduser1
5.#以后添加用户可用此命令,参数m表明需要加密
6.htpasswdCm%SVN_REPO_PARENT%"passwduser2

此时用文本编辑器打开”%SVN_REPO_PARENT%/passwd”,可以看到里面内容是类似这样的:
1.admin:$apr1$HLWV7/..$upZwVGvge0sc28fEp7mGM0
2.user1:$apr1$8sbRo...$hNMdkTvO4t8POVmOkV3Vg.
3.user2:$apr1$ZXzcE/..$5Ir0V8VQQtNYTNnnOp.EU1

18.把SVN自带的XSLT文件拷贝到网站根目录,然后设置合理权限(windows平台则不必考虑)
1.#这里假设你的网站根目录是/var/www/html
2.mv/tmp/subversion-1.2.3/tools/xslt/svnindex*/var/www/html
3.chownapache:apache/var/www/html/svnindex*
4.chmod644/var/www/html/svnindex*
5.
6.#设置所有者和权限(将权限赋给apache运行的用户身份)
7.chown-Rapache:apache%SVN_REPO_PARENT%
8.chmod-R766%SVN_REPO_PARENT%

相关推荐