`
Eric_liu
  • 浏览: 90919 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Subversion(SVN)安装使用指南 (转)

    博客分类:
  • JAVA
阅读更多

※简述※

Subversion是近期在开源社区中非常流行的一款版本控制软件,它是CVS的替代产物。

它的主要特征有:

  • CVS大部分的功能。
  • 支持“目录”级别的版本管理,并且解决了CVS中迟迟未能解决的文件重命名和移动等问题。甚至对文件或文件夹的属性都提供了版本管理。
  • “提交(commit)”实现了真正意义上的原子操作。也就是类似数据库中的事务的功能。
  • 版本号依据每次提交而改变,不再针对每个文件。日志信息也是针对每次提交而设置。所以看到版本号是几百或者几千也不用太惊讶,表示方式不一样罢了。
  • 通过WebDAV/DeltaV协议,可以与Apache的网络服务无缝衔接(通过Apache来运行)。这样就能提供一些额外的功能,例如:认证,压缩传输,以及数据仓库(Repository,见下)的浏览等。
  • 也可以作为独立服务器运行,但这样的话提供的功能较为简单薄弱。
  • 两种运行模式都支持SSH(当然需要各自的支持和配置)
  • 降低了分支(Branch)和标签(tag)上的时间消耗。底层设计理念和实现上的不同,不细说了。
  • 时间消耗依据的是文件改变部分的大小,而不是数据总量。
  • 创建数据仓库时,用户可以指定是使用内嵌的 BerkeleyDB 数据库,还是特定格式的文件系统。

其他还有些零星的小功能,具体可以参阅: http://subversion.tigris.org/roadmap.html

这里解释一下 数据仓库 的概念:

一个数据仓库对应的可以是一个项目,也可以是多个项目。SVN是基于数据仓库进行管理的。

按照用户习惯,可以只在每个数据仓库内仅放置一个项目的内容。

※下载※

Subversion 1.2.3:

http://subversion.tigris.org/project_packages.html

(SVN的Server端,分不同操作系统的版本,这里我下载的是for windows及for linux的)

TortoiseSVN:

http://tortoisesvn.tigris.org/download.html

(windows下的SVN客户端,以shell方式集成在系统右键菜单中)

Apache 2.0.55:

http://httpd.apache.org/download.cgi

(视操作系统而下)

※安装使用※

下面说一下安装,分两种平台(windows,linux)及两种模式(与Apache绑定 vs. Stand-alone)

具体在Apache上的配置倒是大同小异。

另外,SVN是支持SSL的,但是这个配置牵涉到其他太多东西,本文就不过多涉及了。真的有需要可以参考SVN的手册(英文)。

方便起见,用几个变量代表具体的值,请自行加以调整:

%SystemRoot% — windows的系统所在目录,一般类似这样:C:\WINNT

%SVN_HOME% — SVN的安装目录

%SVN_REPO_PARENT% — SVN所有数据仓库的根目录(就是存放全部版本文件的总目录)

%PROJECT_NAME% — 项目名,严格的来说它对应的是一个数据仓库,但是这里遵从用户习惯,以项目名称方式来命名。

%SERVER_NAME_OR_IP% — 服务器名或IP地址

%APACHE_HOME% — Apache2的安装路径

另外,安装过程默认使用文件系统做后台数据库,文中不再加以说明。如需使用BerkeleyDB,请自行参考SVN文档。

Windows上的服务器端安装

____________________________________________

1.双击下载得来的”svn-1.2.3-setup.exe”并安装到”%SVN_HOME%”

2.安装完毕后,”%SVN_HOME%\bin”应该已经自动加入到系统路径(%PATH%)中。如果没有,请手工添加。

3.用命令行来测试安装结果是否正确:

  1. cmd
  2. svnadmin

如果返回这样的错误信息:”svnadmin.exe - Unable To Locate DLL”,那就需要尝试一下步骤的中的一种或几种:

安装VC++ 6.0(主要是安装VC的运行库)

或者直接从别的机器上拷贝一个”msvcp60.dll”文件到本机的”%SystemRoot%\system32″下

4.使用以下命令创建一个数据仓库,用来存放项目的源代码和其他文件:

  1. cmd
  2. svnadmin create %SVN_REPO_PARENT%\%PROJECT_NAME%

5.其中%SVN_REPO_PARENT%是包含所有数据仓库的目录,%PROJECT_NAME%是所创建的数据仓库对应的项目名。



*************************

* 以 Stand-alone 模式运行 *

*************************

6.从命令行启动SVN Server:

  1. cmd
  2. svnserve -d -r %SVN_REPO_PARENT%

注意里面的参数 r 限定了浏览全部数据仓库的根目录

当然如果觉得每次这样启动太麻烦的话,也有SVN Serveice的包装程序(http://dark.clansoft.dk/~mbn/svnservice/)。通过它能够以windows service的方式运行SVN Server(其本质还是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 = Anything you want, but generally we use "%PROJECT_NAME%" # 在用户认证界面上出现的提示语句

里面的”users.conf”就是刚才在第7步创建的用户文件。

9.最后,重启SVN Server(什么?你不知道怎么重启?关掉窗口再重新用命令行启动啦;包装成Service的话么就更加简单了)

现在已经可以使用客户端来连接SVN Server,进行import等操作了。

连接Server的URL应该是类似这样的:

  1. svn://%SERVER_NAME_OR_IP%/%PROJECT_NAME%

具体步骤,请参阅第20步。



************************

* 以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. # LoadModule dav_module modules/mod_dav.so

完成之后看起来应该是这样:

  1. LoadModule dav_module modules/mod_dav.so

另外在这行下面再添加两行(请注意把路径中的”\”替换成”/”):

  1. LoadModule dav_svn_module %SVN_HOME%/bin/mod_dav_svn.so
  2. LoadModule authz_svn_module %SVN_HOME%/bin/mod_authz_svn.so

特别需要注意的是:由于模块依赖关系,这三行的出现顺序千万不能颠倒。

14.再来配置一下”httpd.conf”的其他部分,告诉Apache2 SVN的数据仓库所在。

(为避免不必要的麻烦,所有路径中的”\”都请替换成”/”)

注意:

  • 按照下述配置,所有数据仓库将共享密码文件及权限文件
  • 如果需要为每个数据仓库创建独立的设置,请查阅SVN的文档(”Authorization Option”章节)

添加下述内容:

  1. <Location /svn>
  2. DAV svn
  3. SVNParentPath %SVN_REPO_PARENT%
  4. #设置通过浏览器访问Repository时的XML格式文件,可以省略
  5. SVNIndexXSLT "/svnindex.xsl"
  6. # 存取权限控制文件所在地
  7. AuthzSVNAccessFile %SVN_REPO_PARENT%/AccessFile
  8. # 先尝试匿名操作,如有必要再转向用户认证
  9. Satisfy Any
  10. Require valid-user
  11. # 如何验证用户
  12. AuthType Basic
  13. AuthName "Anything you want, but generally we use %PROJECT_NAME%"
  14. AuthUserFile %SVN_REPO_PARENT%/passwd
  15. #输出时调用Apache的Deflate模块,必须有启用此模块才能这样配,否则删除此行
  16. SetOutputFilter DEFLATE
  17. </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%\passwd user1
  5. # 以后添加用户可用此命令,参数m表明需要加密
  6. htpasswd –m %SVN_REPO_PARENT%\passwd user2

此时用文本编辑器打开”%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. chown apache:apache /var/www/html/svnindex*
  4. chmod 644 /var/www/html/svnindex*
  5. #设置所有者和权限(将权限赋给apache运行的用户身份)
  6. chown -R apache:apache %SVN_REPO_PARENT%
  7. chmod -R 766 %SVN_REPO_PARENT%

19. 重启Apache2服务:

  1. cmd
  2. net stop Apache2
  3. net start Apache2

20.打开浏览器,访问:http://%SERVER_NAME_OR_IP%/svn/

如果返回的页面是”403 Forbidden”,可能是由于Apache2默认没有打开目录的浏览权限(Option Indexes,参阅Apache2文档),但这并不影响使用。

现在已经可以用客户端导入项目并开始使用了。

具体步骤,请参阅第20步。



***********************************************

* 注意:以下步骤/命令需要在装有SVN客户端的机器上执行 *

* Windows下安装服务器端的时候已经同时安装了客户端 *

* Linux下尚待查证。 *

***********************************************

21.和CVS一样,SVN在最初的时候需要将已有项目导入到数据库中。

从命令行执行以下命令(Stand-alone):

  1. svn import c:\temp\myproject svn://%SERVER_NAME_OR_IP%/%PROJECT_NAME% -m "initial import" --username your_username --password your_password

或者(Apache2 module):

  1. svn import c:\temp\myproject http://%SERVER_NAME_OR_IP%/svn/%PROJECT_NAME% -m "initial import" --username your_username --password your_password

其中:

A) c:\temp\myproject里面包含了你所要导入的项目文件的内容

B) %SERVER_NAME_OR_IP%是SVN Server的名字或者IP地址,上面存有第5步中创建的数据仓库

C) %PROJECT_NAME%是要导入到的数据仓库名称,这里选择跟项目名一致

D) 参数 m 表明此次导入操作的注释,SVN的注释是按每次提交来定义的,导入也是提交的一种。

E) your_username和your_password是第7和17步创建的用户及密码,注意该用户必须对上面的%PROJECT_NAME%数据仓库有写权限才能成功。

22.然后,需要从Server端再次checkout到本地:

(这点感觉不是太方便,为啥不做成import的时候有个选项,本地目录可以自动生成版本信息呢?)

  1. cmd
  2. cd /D anywhere_you_want_to_put_your_versioned_project_files
  3. svn co svn://myserver/myproject/trunk . --username your_username --password your_password

注意:

“co”是”checkout”的一个别名

那个点[.]代表当前目录,checkout出来的文件会自动放到这个目录下。也可以改为某个绝对路径。

23.对于向SVN Serer增加,移动,删除,或者修改后提交某些文件,参考使用以下命令:

  1. Add: svn add src/myfile.java -m "adding a file"
  2. Move: svn move src/myfile.java src/mynewfile.java -m "moved myfile.java to mynewfile.java"
  3. Delete: svn delete src/myfile.java -m "removing a file"
  4. Commit: svn commit src/myfile.java -m "the message"

对于上面的客户端操作,如果安装了TortoiseSVN,一切就变得简单多了。

不过这个就要抓图来说明了。等有空的时候再放上来。

※总结※

使用Eclipse的朋友还可以参考这里: http://subclipse.tigris.org/

它以插件的形式向Eclipse提供了SVN的支持。

另外,具体的设置,参数说明等还是需要自己去查阅SVN的文档(在安装server端的时候已经附带)

参考文献及资料:

_________________________________________

http://subversion.tigris.org/

http://www-128.ibm.com/developerworks/cn/opensource/os-subversion/

http://www.javayou.com/showlog.jspe?log_id=972

分享到:
评论

相关推荐

    centos下svn客户端软件rapidSVN安装资源包及教程

    rapidsvn安装所需的全部资源包,可离线安装(gtk2和openssl的rpm包只上传了centos7版本) apr-1.5.2.tar.gz apr-util-1.5.4.tar.bz2 neon-0.29.6.tar.gz(可选,neon是subversion解析web http协议的包,视subversion...

    《Version Contro with Subversion》SVN以及安装方法

    ### SVN版本控制系统详解及安装指南 ...通过以上步骤,你可以顺利完成Subversion Server的安装并开始使用SVN进行版本控制管理。这不仅有助于团队协作,还能有效管理项目的各个版本,提高开发效率和质量。

    SVN使用指南(含SVN服务器的安装与使用)

    SVN 使用指南(含 SVN 服务器的安装与使用) SVN(Subversion)是一种版本控制系统,能够帮助开发团队更好地管理代码仓库。下面是 SVN 使用指南,涵盖了 SVN 服务器的安装与使用、SVN 客户端的安装与使用等内容。 ...

    svn日常使用指南及常见错误

    【SVN日常使用指南】 SVN(Subversion)是一种版本控制系统,用于跟踪文件和目录的修改,便于多人协作开发。TortoiseSVN是Subversion的免费开源客户端,专为Windows用户设计,提供了直观的图形用户界面。 1. **...

    svn使用简要指南

    《SVN使用简要指南》 1. 前言 1.1. 目的 本指南旨在为项目团队提供一个清晰易懂的 SVN 使用教程,帮助成员们有效地管理和协同处理项目文档,掌握基本的版本控制操作。 1.2. Subversion 的介绍 Subversion(简称 ...

    Subversion for Windows安装指南

    ### Subversion for Windows安装指南知识点总结 #### 一、Subversion概述 - **定义**: Subversion,简称SVN,是一种集中式的版本控制系统。它通过跟踪文件和目录的变化历史,允许团队成员协同工作,并且可以回溯到...

    SVN用户使用详细指南

    本指南旨在为用户提供Subversion(以下简称SVN)的基本使用方法及深入操作技巧,帮助用户快速掌握SVN的核心功能与应用场景,从而提高开发效率与项目协作能力。 ##### 1.2 范围 该指南适用于所有希望了解并使用SVN...

    SVN SubVersion

    `svn中文帮助手册`提供了详尽的Subversion使用指南,包括所有命令的用法、最佳实践和解决常见问题的方法。对于初学者来说,这是一个非常有价值的资源,可以帮助他们快速掌握SVN的使用。 总的来说,SVN SubVersion是...

    myEclipse svn安装及使用方法

    **我的Eclipse SVN安装与使用指南** 在软件开发过程中,版本控制系统是非常关键的工具,它可以帮助团队协作,管理代码的版本,防止数据丢失。本文将详细介绍如何在Eclipse集成开发环境中安装和使用Subversion(SVN...

    SVNManager配置详细说明文档

    SVNManager 配置详细说明文档 SVNManager 是一个基于 Web 的 SVN 管理软件,旨在提供一个统一的平台 дл...SVNManager 配置详细说明文档旨在提供一个详细的安装和配置指南,为用户提供一个完整的 SVN 管理解决方案。

    subversion使用指南中文版

    ### Subversion (SVN) 使用指南中文版知识点详解 #### 一、Subversion 简介 Subversion,简称 SVN,是一种广泛使用的版本控制系统。它允许团队成员在开发过程中协作编辑文档、源代码等文件,并能追踪每一个变更,...

    subversion及myeclipse的svn插件安装文档

    Subversion(SVN)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件的历史记录。在本教程中,我们将深入探讨如何在CentOS 6环境下安装Subversion 1.7版本,以及如何在MyEclipse集成开发环境中安装...

    SVN安装操作指南——PDF版本

    ### SVN安装操作指南知识点 #### 一、工具介绍与安装前的思想准备 ##### 工具介绍 1. **Apache** - **简介**: Apache是一款知名的Web服务器软件,以其出色的性能和安全性著称。 - **作用**: 在本指南中,Apache...

    svn安装教程中文语言包等

    在进行版本控制系统的学习和使用时,Subversion(简称Svn)是一个不可或缺的工具,尤其对于初学者而言。Svn.zip压缩包提供了全面的资源,帮助用户轻松完成Svn的安装,并配备了中文语言包,使得操作过程更加便捷。 1...

    SVN(Subversion)安装全过程

    `svn-book.pdf` 提供了详细的SVN使用指南,涵盖了从基本操作到高级特性的全方位介绍,包括冲突解决、分支策略和版本控制的最佳实践。通过阅读这本书,你可以深入理解SVN的工作原理,并熟练掌握其在实际开发中的应用...

    svn安装+使用教程

    在本文中,我们将详细介绍如何安装 SVN,并通过 TortoiseSVN 这个直观的图形用户界面来使用它。 首先,我们来看一下 **安装 SVN** 的步骤。在提供的资源中,有两个 MSI 安装包:`TortoiseSVN-1.7.7.22907-x64-svn-...

    SVN高级使用指南

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理软件开发过程中的源代码和文档变更。本高级使用指南将重点介绍在模块化开发中如何有效利用SVN以及分支技术在产品化开发中的应用。 一、模块化开发中的SVN...

    SVN版本管理系统的安装(CentOS+Subversion+Apache+Jsvnadmin)安装步骤

    SVN 版本管理系统安装指南 本文档详细介绍了 SVN 版本管理系统的安装步骤,包括安装 CentOS、Subversion、Apache 和 Jsvnadmin 等组件的详细过程。 标题解释 SVN 版本管理系统的安装(CentOS+Subversion+Apache+...

Global site tag (gtag.js) - Google Analytics