`
xiangxingchina
  • 浏览: 520206 次
  • 性别: 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进行版本控制

    #### 二、构建版本控制环境 ##### 2.1 版本控制系统的重要性 版本控制系统是软件开发过程中不可或缺的一部分,它能够帮助开发者们有效地管理项目的变化历史。通过使用版本控制系统,团队可以轻松地回滚到之前的...

    用 Apache 和 Subversion 搭建安全的版本控制环境

    ### 用 Apache 和 Subversion 搭建安全的版本控制环境 #### Subversion 简介 Subversion 是一种开源版本控制系统,它以其强大的特性和灵活性,在开源软件开发领域获得了广泛的认可。相比于早期流行的版本控制系统 ...

    采用 Subversion进行版本控制

    7. **与其他工具的集成**:介绍如何将Subversion与常见的开发环境(如Eclipse、IntelliJ IDEA)以及构建工具(如Maven、Gradle)集成。 8. **故障排查**:提供常见错误的解决方案,帮助用户应对日常使用中遇到的...

    SubVersion版本控制服务器端的目录级或库级别的访问权限配置

    SubVersion(通常缩写为SVN)是一种广泛使用的版本控制系统,用于管理软件开发中的源代码和其他文件的变更。它允许团队成员协作,并确保在多人同时修改同一份代码时,能够有效地合并更改,防止冲突。本篇文章将深入...

    Linux 上安装 Subversion

    ### Linux上安装Subversion详解 #### 一、Subversion简介 Subversion,简称SVN,是一种集中式的版本控制系统...通过以上步骤,你可以在Linux环境下成功安装并配置Subversion,为开发团队提供稳定可靠的版本控制服务。

    subversion-1.7.9.zip

    这个"subversion-1.7.9.zip"文件是Subversion 1.7.9版本的压缩包,它包含了该版本的所有源代码、文档、构建脚本和其他必要的组件,允许用户在本地环境中安装和运行Subversion服务器。 1. **Subversion简介**: ...

    subversion-1.7.1.zip

    Subversion(简称SVN)是一种广泛使用的版本控制系统,它的核心功能是管理文件和目录的变更历史...Subversion 1.7.1的发布为用户提供了一个更快、更稳定、更易用的版本控制环境,是进行软件开发和项目管理的有力工具。

    svn subversion-1.7.2

    Subversion(SVN)是一个开源的版本控制系统,用于管理对软件项目源代码的更改。它在软件开发领域中广泛使用,特别是在多人协作的环境中,帮助团队成员协同工作,跟踪文件的修改历史,以及解决合并冲突等问题。...

    Subversion-1.8.8-1

    Subversion 是一个强大的开源版本控制系统,它被广泛用于软件开发和其他需要版本管理的项目中。在给定的压缩包文件“Subversion-1.8.8-1”中,我们看到的是Subversion的一个特定版本——1.8.8,这通常意味着它是一个...

    subversion1.2x 插件

    Subversion 1.2x 插件是针对Eclipse集成开发环境的一个版本控制系统插件,主要用于支持Subversion(SVN)版本控制系统的操作。Subversion是一个开源的版本控制系统,允许用户跟踪文件和目录的更改历史,便于团队协作...

    subversion API

    - **自定义客户端工具**:开发者可以使用Subversion API 构建具有特定功能的版本控制客户端,如集成IDE的插件,或者针对特定团队需求的定制化工具。 - **持续集成/持续部署(CI/CD)**:在自动化构建和部署过程中,...

    subversion-1.8.14.tar

    在实际开发中,Subversion可以配合Git等工具实现更加灵活的版本控制策略,例如,通过Git-SVN桥接,可以在本地使用Git的优势,同时与Subversion服务器保持同步。 7. 存储和服务器: Subversion通常与Apache ...

    比较好的版本控制入门:SubVersion

    SubVersion(简称SVN)是一种广泛使用的开源版本控制系统,它允许用户管理文件和目录的历史版本,方便团队协作和项目管理。SubVersion的核心功能包括版本追踪、冲突解决、分支与合并以及备份恢复等,这些都是软件...

    使用SUBCLIPSE——针对ECLIPSE的SUBVERSION插件

    Subversion(简称SVN)是一种广泛使用的版本控制系统,它提供了比CVS更先进的功能,如版本化的文件重命名、目录操作以及元数据版本控制。SVN还支持原子提交操作,允许通过HTTP/HTTPS协议进行远程访问,使得在不同...

    subversion-1.6.1.tar.gz

    Subversion(简称svn)是一个广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。这个"subversion-1.6.1.tar.gz"文件是Subversion 1.6.1版本的服务器端源码包,特别设计用于Linux操作系统。源码包意味着你...

Global site tag (gtag.js) - Google Analytics