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

用 Subversion 构建版本控制环境

阅读更多

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

用 Subversion 构建版本控制环境

developerWorks

 

级别: 初级

冬 刘 (javayou@gmail.com ), Java自由人

2005 年 9 月 01 日

本文将介绍如何通过 Subversion 来构建小组开发过程中最为重要的版本控制环境,包括Subversion 环境的安装配置以及如何通过各种有效的客户端工具来提高工作的效率。

一. 首先我们先来认识一下 Subversion

Subversion 项目的初衷是为了替换现在开源社区最为流行的版本控制软件 CVS,在 CVS的功能的基础上有很多的提升同时也能较好的解决 CVS 系统的一些不足,这些提升主要包括以下的一些方面:

1. 目录、文件以及改名等元数据的版本化
不同于 CVS 只关心文件的内容以及文件是否存在,所有文件、目录的相关操作都是被版本化的,例如文件的改名、拷贝等等;

2. 提交操作是真正的原子操作
在 Subversion 中,提交操作是不可分割的,修订版本号是基于每次提交操作而非文件。提交日志被附加在每个修订版本中,而不是像 CVS 一样冗余的进行存储;

3. 可通过 Apache 服务器提供基于 WebDAV/DeltaV 协议的支持
该功能可使 Subversion 通过 Apache Web 服务器使资源库更加灵活的在网上进行共享,使其在互操作性上大大优于 CVS;

4. 可独立运行
当你不想使用 Apache 2.x 时候,你也可以使用 Subversion,它可以以守护进程或者是Windows 下的服务方式独立运行;

5. 分支(Branching)与标签(Tagging)操作是轻量级的;

6. 客户服务器端分层库结构设计;

7. 资源库可以采用数据库(BerkeleyDB)或者是使用特定格式的文件进行存储;

8. 更有效的对二进制文件进行处理。

更多的特性可以参照 Subversion 提供的文档(http://subversion.tigris.org/)


回页首


二. Subversion版本控制环境在Windows系统下的安装

在Windows下安装最为方便的办法就是下载安装程序,你可以到下面这个地址下载最新的二进制压缩版本svn- win32-1.2.3.zip ,地址是: http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 把该文件解压到一个目录,假定为 D:\subversion。

接下来新建一个存放项目的资源库目录,例如:D:\repository\project1,执行下面命令对这个项目目录进行初始化: D:\subversion\bin> svnadmin create D:\repository\project1

Subversion会在D:\repository\project1目录下生成很多的子目录以及文件,接下来我们需要 设置该项目的用户信息以及项目的基本信息,打开D:\repository\project1\conf\passwd文件,去掉[users]的注释, 并添加用户如下:


### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.
[users]
admin = admin1234
liudong = liudong123

Subversion使用了明码存储用户的口令,这应该算是它的一个不足。

接下来打开conf\svnserve.conf修改如下


[general]
anon-access = read
auth-access = write
password-db = passwd
realm = project1

在做完这些基本的设置后就可以启动 Subversion 了,当然最好的方式就是让 Subversion 做为一个服务来运行,我们可以通过一个第三方的工具 SVNService 让 Subversion 以 Windows 服务的方式运行。

到 http://dark.clansoft.dk/~mbn/svnservice/ 下载SVNService.zip并把它解压到{Subversion}\bin目录下,通过运行 svnservice -install -d -r D:\repository\project1 ,执行的结果显示:SVNService installed. 这时候你可以在服务控制台中看到名为SVNService的服务,启动它就可以了,如果你不想用服务的方式启动Subversion,你可以运行 svnserve -d来启动Subversion。

要卸载SVNService服务,只需要运行 SVNService -remove 即可。

至此,Subversion已经安装成功,我们将在接下来的一节中介绍如何通过各种客户端对资源库进行操作。




回页首


三. Subversion 各种客户端的使用

一个版本控制软件好不好不仅在于服务器端是否提供足够强大的功能,同时有没有足够友好的客户端也是非常重要的。

Subversion 本身提供一个基于命令行的工具 svn,基本上所有的操作都可以通过这个工具来完成,但是用户操作界面不太友好。不过我们可以先使用这个工具来验证一下我们之前安装的 Subversion 服务是否已经正常工作。接下来我们先随便导入一个项目,并对这个项目的某些文件进行简单的修改、提交并重新导出项目,通过这些基本的操作先来体验一下 Subversion。(为了操作方便你最好把{subversion}\bin目录加到系统的PATH环境变量中)

1. 导入项目

转到你的项目所在的目录,执行下面命令来提交整个项目
svn import . svn://localhost/project1 -m "initial import" --username liudong --password liudong123
其中[.]表示当前目录,你也可以指定项目的绝对路径。

2. 检出项目
为了验证刚才导入的项目,我们转到一个新的目录下,执行
svn checkout svn://localhost/project1 --username liudong -password liudong123
就可以在当前目录下生成一个project1的项目目录,目录中的内容就是我们刚才所提交的所有文件。

3. 提交修改后的文件
修改项目中的任何一个文件,使用命令来提交所作的修改:
svn commit ReadMe.txt -m "modified" --username liudong -password liudong123

4. 获取最新的版本
当项目组的其他成员修改并提交了某个文件,你可以通过下面命令来获取到该文件的最新的版本:
svn update -r HEAD ReadMe.txt --username liudong -password liudong123

上面四个是版本控制环境中最最基本的操作,不过这样的操作环境你肯定觉得麻烦,对于使用Eclipse环境进行开发的朋友 来讲,接下来我们介绍一个Eclipse的插件Subclipse,该插件提供对Subversion服务的操作支持。你可以单独下载该插件的压缩包进行 本地更新或者通过Eclipse Update进行远程安装,远程安装的URL是 http://subclipse.tigris.org/update ,相信大家对Eclipse Update已经了如指掌,这里不再罗嗦。

检查一下插件有没有安装成功吧,打开菜单Windows->Preferences->Team检查是否有SVN节点,点击SVN即可看到该插件的设置界面如下图所示:



保持默认的设置即可,接下来我们通过该插件将一个项目导入到Subversion服务器中,右击项目名 ->Team->Share Project…打开项目共享对话框,对话框有两个选择,一是Eclipse内置的对CVS的支持,还有另外一个就是我们刚装上的SVN。选择SVN进入 服务器设置界面,入下图



需要填写的是服务器的URL以及用户名和口令,服务器的URL不需要填写项目名称,点击下一步按钮进入项目名称设置



在这里可以看到Subclipse会自动给URL加上项目的名称。点击结束按钮将出现提交对话框如下图



选择你所需要提交的文件或者目录点击OK按钮即可完成项目的导入。接下来的很多操作跟CVS很类似,但是又比CVS的功能强大得多,随便右击一个文件打开Team的上下文菜单如下:



通过该菜单我们可以看到CVS有的功能在这上面都有,而且还包括可以对文件进行加锁和解锁操作,同时还有可以设置文件的属性,可以通过SVN Properties视图查看某个文件的属性



与CVS不同的是当文件被修改后SVN插件显示的是一个星号的小图标。同样的,当有些文件你并不想添加到资源库中的时候, 你也可以像CVS一样把该文件添加到svn:ignore。Subclipse插件还有更多其他的功能这里不一一介绍了,大家可以在使用的过程中去发掘。

以上介绍的针对使用Eclipse开发环境的人员,但是项目组的一些其他成员例如网页设计师,他们怎么来方便的使用Subversion呢?因此接下来我们介绍一个集成在Windows Shell的客户端工具TortoiseSVN (http://tortoisesvn.tigris.org/ ),利用这个工具也可以非常简单的进行资源库的操作。TortoiseSVN的安装非常简单,直接运行安装程序,按照默认方式安装即可,安装完毕需要重新启动系统。

如果没什么意外的话,随便右击一个文件即可看到上下文菜单多了一个菜单项是TortoiseSVN,如果是文件夹还会有另 外一个项是SVN Checkout…。在使用之前你可以根据自己的喜欢对TortoiseSVN进行一些设置,右击任一文件选择 TortoiseSVN->Settings即可打开设置对话框如下:



TortoiseSVN的一个非常有用的工具就是资源库浏览器,在桌面空白位置单击鼠标右键选择TortoiseSVN->Repo-Browser即可打开资源库浏览器如下图所示:



通过该浏览器你可以浏览资源库中的所有项目以及项目中每一个文件的信息。但是怎么做一些日常的操作呢,例如提交、更新等等?

首先我们先看如何从资源库中检出(CheckOut)一个已有的项目,在空白处单击鼠标右键选择SVN Checkout…菜单项



输入存放项目的文件夹以及项目对应的SVN的URL地址如上图,点击OK按钮后TortoiseSVN会显示详细的进度信息



转到存放项目的文件夹即可看到整个项目的所有文件已经被检出,而且图标已经被替换成TortoiseSVN的图标,如下图所示:



这个时候你就可以随意的修改文件,并在修改后右击所修改的文件即可进行提交或者更新操作。

以上介绍的三种不同的Subversion客户端已经可以满足大部分用户的要求,同时三者也可以互为补充。另外 Subversion也可以与Apache HTTP服务器结合提供基于WebDAV协议的服务,其在共享方面远远超过了CVS,有兴趣的读者可以阅读Subversion的文档进行配置。

对正在使用CVS的用户来讲,也可以通过一个名为cvs2svn的工具来将已有的项目移植到Subversion中,该工具可以在http://cvs2svn.tigris.org/ 下载。



参考资料



关于作者

 

刘冬,一直使用J2EE/J2ME从事移动业务方面的开发。现在可以通过Java自由人网站来跟我联系,网址是:http://www.javayou.com ,另外我的邮件地址是javayou@gmail.com

 

//==========================================================================

补充,如果出现权限控制问题

 

请到自己的工程文件夹下的authz中设置权限
分享到:
评论

相关推荐

    用Subversion构建版本控制环境

    首先我们先来认识一下Subversion二.Subversion版本控制环境在Windows系统下的安装三.Subversion各种客户端的使用参考资料本文将介绍如何通过Subversion来构建小组开发过程中最为重要的版本控制环境,包括...

    使用subversion进行版本控制

    用Subversion 构建版本控制环境的相关文章

    使用SVK构建分布式版本控制环境

    火龙果软件工程技术中心 本文内容包括:前言历史License新功能性能完整的例子结束语下载参考资料SVK是一个基于Subversion构造的分布式的版本控制系统。通常的集中式管理系统,如CVS,Subversion已经得到广泛应用,...

    Cornerstone_4.1破解版mac版SVN客户端

    Cornerstone for Mac 是一个强大的,面向用户的版本控制实用程序,构建在开源Subversion版本控制系统之上,使复杂的版本控制项目尽可能简单。此外,Cornerstone全面支持Subversion的所有丰富功能,同时具有极强的...

    MSYS2:Windows 软件分发和构建平台-开源

    它包括一个名为 mintty 的命令行终端、bash、git 和 subversion 等版本控制系统、tar 和 awk 等工具,甚至 autotools 等构建系统,所有这些都基于 Cygwin 的修改版本。 MSYS2 为 GCC、mingw-w64、CPython、CMake、...

    嵌入式学习之Linux基础

    另外,我熟悉多种版本控制系统,包括Git和Subversion。这些系统能够帮助我管理源代码的变更,并与团队成员协作开发。我深知版本控制的重要性,能够熟练运用这些系统进行代码管理和版本控制。 总的来说,我拥有丰富而...

    Git使用说明书-v2.1.55

    1. 介绍版本控制系统(VCSs)和 Git 的基本概念 2. Git 的基本使用 3. Git 的分支模型 4. 服务器端的 Git 5. 多种分布式工作流的细节,以及如何使用 Git 实现它们 6. 介绍 GitHub 托管服务以及深层次的工具 7. 关于 ...

    嵌入式之C语言基础学习

    另外,我熟悉多种版本控制系统,包括Git和Subversion。这些系统能够帮助我管理源代码的变更,并与团队成员协作开发。我深知版本控制的重要性,能够熟练运用这些系统进行代码管理和版本控制。 此外,我善于利用各种...

    TortoiseSVN客户端程序

    一些版本控制系统也是软件配置管理(SCM)系统,这种系统经过特定的精巧设计来管理源代码,有许多关于软件开发的特性—本身理解编程语言、或者提供构建程序的工具。然而,Subversion不是这样一个系统,它是一个通用...

    MSYS2:Windows的软件分发和构建平台-开源

    它由一个名为mintty,bash,版本控制系统(如git和subversion),诸如tar和awk之类的工具,甚至是诸如autotools之类的构建系统的命令行终端组成,所有这些都基于Cygwin的修改版。 MSYS2为GCC,mingw-w64,CPython,...

    Eclipse安装SVN-CC-GIT-VSS-CVS详细使用说明书

    SVN全名Subversion,即版本控制系统,实现服务系统的软件。 SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion 管理着随时间改变的数据。 这些数据放置在一个...

    Jenkins管理员操作手册.docx

    Subversion Workspace Version:SVN的版本号,选择你对应的版本号 2.4.邮件通知配置 配置发件人地址   系统管理员邮件地址:Jenkins邮件发送地址  配置邮件通知 3.构建任务 增值服务器端,...

    progit(git中文文档)

    在*第一章*,我们将介绍版本控制系统(VCSs)和 Git 的基本概念——不涉及技术内容,仅仅是什么是 Git, 为 什么它会成为 VCSs 大家庭中的一员,它与其它 VCSs 的区别,以及为什么那么多人都在使用 Git。然后,我们将 介绍...

    低清版 大型门户网站是这样炼成的.pdf

    2.3.1 struts 2应用开发环境的搭建 62 2.3.2 struts 2应用基本开发步骤—搭建eportal应用 69 2.3.3 struts 2中集成fckeditor 80 2.3.4 struts 2中集成displaytag 83 2.4 struts 2国际化实现 85 2.4.1 web应用的...

    Maven权威指南 很精典的学习教程,比ANT更好用

    版本构建号 9.3.1.2. SNAPSHOT版本 9.3.1.3. LATEST 和 RELEASE 版本 9.3.2. 属性引用 9.4. 项目依赖 9.4.1. 依赖范围 9.4.2. 可选依赖 9.4.3. 依赖版本界限 9.4.4. 传递性依赖 9.4.4.1. 传递性依赖和...

Global site tag (gtag.js) - Google Analytics