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

开发 项目管理
SVN版本控制你是否熟悉?这里向大家介绍一下SVN版本控制运行的两种模式,希望通过本文的学习大家对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
特别需要注意的是:由于模块依赖关系,这三行的出现顺序千万不能颠倒。#p#

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

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

  1. 1.<Location/svn> 
  2. 2.  
  3. 3.DAVsvn  
  4. 4.SVNParentPath%SVN_REPO_PARENT%  
  5. 6.#设置通过浏览器访问Repository时的XML格式文件,可以省略  
  6. 7.SVNIndexXSLT"/svnindex.xsl"  
  7. 8.  
  8. 9.#存取权限控制文件所在地  
  9. 10.AuthzSVNAccessFile%SVN_REPO_PARENT%/AccessFile  
  10. 11.  
  11. 12.#先尝试匿名操作,如有必要再转向用户认证  
  12. 13.SatisfyAny  
  13. 14.Requirevalid-user  
  14. 15.  
  15. 16.#如何验证用户  
  16. 17.AuthTypeBasic  
  17. 18.AuthName"Anythingyouwant,butgenerallyweuse%PROJECT_NAME%"  
  18. 19.AuthUserFile%SVN_REPO_PARENT%/passwd  
  19. 20.  
  20. 21.#输出时调用Apache的Deflate模块,必须有启用此模块才能这样配,否则删除此行  
  21. 22.SetOutputFilterDEFLATE  
  22. 23.  
  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.htpasswd–cm%SVN_REPO_PARENT%"passwduser1
5.#以后添加用户可用此命令,参数m表明需要加密
6.htpasswd–m%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%

19.重启Apache2服务:
1.cmd
2.netstopApache2
3.netstartApache2

20.打开浏览器,访问:http://%SERVER_NAME_OR_IP%/svn/
如果返回的页面是”403Forbidden”,可能是由于Apache2默认没有打开目录的浏览权限(OptionIndexes,参阅Apache2文档),但这并不影响使用。现在已经可以用客户端导入项目并开始使用了。具体步骤,请参阅第20步。本节关于SVN版本控制运行的两种模式介绍完毕。

【编辑推荐】

  1. 资深专家介绍SVN版本控制的安装使用方法
  2. SVN版本控制器安装的那些事
  3. 术语汇编:SVN版本控制详解
  4. 名师课堂:Eclipse中安装SVN版本控制插件方法详解
  5. 学习笔记: 如何删除SVN版本控制信息
责任编辑:佚名 来源: svn8.com
相关推荐

2010-06-02 15:51:01

SVN版本控制

2011-02-23 12:49:31

KonquerorEmbedded

2010-06-01 18:35:54

删除SVN版本信息

2010-06-02 10:47:37

SVN开发

2010-06-02 14:28:23

SVN版本控制

2010-05-26 18:20:59

SVN库

2009-06-29 18:11:40

JSP设计模式

2021-08-11 06:57:16

ShuffleSpark核心

2022-03-15 08:25:32

SparkShuffle框架

2010-06-03 19:28:02

Hadoop

2010-05-31 11:30:57

SVN使用

2022-02-21 08:18:38

option编程模式

2010-08-26 15:15:18

DB2备份

2010-06-02 17:16:16

自动运行SVN

2012-11-29 10:45:31

2021-10-09 09:15:01

Windows 11安全模式系统

2010-03-18 10:18:52

python模块

2010-08-31 09:31:58

Silverlight

2009-12-17 13:45:58

VS 2008外壳

2022-03-10 07:39:33

.NET部署模式
点赞
收藏

51CTO技术栈公众号