Subversion的安装与使用

Elliotte Rusty Harold 介绍了 Subversion —— 一种开放源码、多用户版本控制系统,支持非 ASCII 文本和二进制数据。通过 Elliotte 的介绍,您可看到如何在 Eclipse 中配置 Subversion 支持(通过 Subclipse 插件)、检出一个项目、与您的存储库同步,随后执行一些常用的操作,如合并、修补、比较和删除。

版本控制之于程序员,就好比安全网之于高空秋千表演者。知道安全网就在那里,万一自己摔落它能够提供保护,高空秋千表演者才能放心大胆地在空中飞跃。同样,版本控制使您有能力去冒以往想都不敢想的风险。如果哪儿出了错,您总是可以使自己的代码回复到一个已知的、工作正常的版本。您可以在不触及主干的分支中进行试验,而不会影响到其他小组成员。在已经发布的产品的较老版本中发现 bug 时,您可以轻松检出特定版本,以确认、修订,并生成该 bug 的修补程序。如果没有版本控制,您必须极为慎之又慎,缓慢地推进,总而言之,生产力会更低。

Subversion 是一种开放源码的全新版本控制系统,支持可在本地访问或通过网络访问的数据库和文件系统存储库。不但提供了常见的比较、修补、标记、提交、回复和分支功能性,Subversion 还增加了追踪移动和删除的能力。此外,它支持非 ASCII 文本和二进制数据,所有这一切都使 Subversion 不仅对传统的编程任务非常有用,同时也适于 Web 开发、图书创作和其他在传统方式下未采纳版本控制功能的领域。

本文介绍了使用 Subversion 追踪项目的基础知识,以使您在编写代码时能够承受更多的风险、享受更多的乐趣。

版本控制简史

当我还是一名刚刚毕业的学生时,我第一次在国家太阳观察站(National SSolar Observatory)接触到了如今版本控制系统的鼻祖 —— SCCS。今天,已经出现了数不胜数的版本控制系统,而 SCCS 也早已被更强大的产品所取代,如 Visual SourceSafeBitKeeperPerforce 和开源 CVS(参见 参考资料 部分)。

在开放源码程序员间,CVS 已成为一种事实上的 标准。CodehausSourceforgeSavannah Java™ 社区的 java.net 等站点中驻留的免费 CVS 使得为开源项目建设存储库更为简单。以 CVS 为中心,已发展起一个大型的附件市场,包括 TortoiseCVSViewCVS Fisheye 等工具。

与其他版本控制系统相比,CVS 最令人称道的地方就是其非锁定 存储库,这使多个开发人员能够同时检出同一个文件。CVS 在提交时解决冲突问题,这就避免了冲突成为发展的瓶颈。CVS 第二个出色的特性就是它是一种网络存储库。处于许多不同系统上的程序员可以通过公共的 Internet 访问相同的存储库。

逐渐失去优势的 CVS

CVS 在过去的十年中,为社区提供了优质的服务,但它陈旧的劣势开始体现出来。首先,它实际上仅能处理 ASCII 文件。Unicode 文件会令 CVS 严重混乱。此外,CVS 存储库更改起来极为困难。CVS 没有任何关于移动操作的概念。它只能注意到,一个文件在一处被删除了,而在一个新位置创建了另外一个文件。由于它不会连接两个操作,因此也很容易使文件历史轨迹丢失。设置 CVS 存储库时,您必须非常谨慎地为每个文件选择准确的位置,因为在设置之后,您几乎就要一直使用这个位置了。

CVS 已经不再适合现代开发,这一点越来越明显。特别是 CVS 只能满足老式 C 程序员的 ASCII 需求,而对 Web 开发人员和其他非传统用户来说,CVS 实际上根本不起作用。在您开始考虑存储整个 Web 站点时,在 CVS 中,将文件从一个目录移动到另外一个目录是关键考虑事项。因此,在几年前,许多核心 CVS 开发人员认为,已经到了利用他们多年来使用 CVS 时学到的经验和教训、从头开始创建新一代开放源码存储库的时机。在 2004 年年初,他们的努力结出了丰硕的果实,那就是 Subversion 1.0

Subversion 的支持与采纳

程序员(特别是那些依赖版本控制的程序员)是一个非常谨慎的群体,Subversion 着实用了很长一段时间,才得到他们的广泛接受。很少有程序员愿意冲在易于流血的最前沿,即便是他们已经因为 CVS 受了伤。甚至是在 Subersion 变得可靠之后,仍然用了好几年的时间,所有第三方编辑器、IDE 和文档规范才相继跟进。而 Subversion 依然在不断改进,BBEdit Eclipse 等第三方工具现在已经有了足够好的 Subversion 支持。逐渐地,新项目也纷纷选择 Subversion 满足其版本控制需求,而老项目正在向 Subversion 移植。最近,Apache Software Foundation 已移植到 Subversion。已实现移植的项目包括 Xerces XML 解析器、Apache HTTP Server Spamassassin

通过 IDE 使用 Subversion

您可通过命令行使用 Subversion,但若将其与您的 IDE 集成更为便捷。IntelliJ IDEA 5.0 及后续版本均包含对 Subversion 的内置支持。NetBeans 还不支持 Subversion,但相关工作已经在开展,未来版本中将提供支持。对于 Eclipse,您需要安装 Subclipse 插件。本文使用 Eclipse 作为 IDE

Subclipse 的安装与其他 Eclipse 插件类似:

  1. Eclipse 中,选择 Help Software Updates | Find and Install...
  2. 在向导的第一个面板中,单击 Search for new features to install 单选按钮,并单击 Next
  3. 在向导的第二个面板中,单击 New Remote Site。输入 Subclipse 作为名称,输入 http://subclipse.tigris.org/update_1.0.x 作为 URL。然后单击 Finish。 这将启动另外一个小的向导。下一个对话框应为您提供一个可安装的特性 —— Subclipse。选中它并单击 Next
  4. 接受许可协议,完成安装。

程序包目前未经过数字签名,但只要您是按照第三步的 URL 下载的,就是安全的。

Subversion 快捷方式

如果您目前常常使用 Subversion,您可能希望将其添加到 Eclipse NewOpen Perspective Show View 菜单中。为此,选择 Window/Customize Perspective... 并在 Shortcut 分类列表中选中 SVN。这将使您可在目前可看到 CVS 的所有菜单中访问 Subversion

安装程序包后,您必须重新启动 Eclipse,随后才能使用 Subversion。完成之后,您就可以与如今使用 CVS 大体相同的方式使用 Subversion 了,只有为数不多的区别。

检出项目

设置一个新的 Subversion 存储库,特别是网络存储库相对来说较为复杂。但若您正在连接一个现有项目,第一次检出文件就相当轻松。在 File 菜单中选择 New/Other...。这些步骤将为您打开如 图 1 所示的对话框:

1. 通过 Subversion 启动一个新项目

接下来,打开 SVN 文件夹,选择 Select Checkout Projects from SVN,并单击 Next 以显示如图 2 所示的对话框:

2. Select/Create Location

第一次从存储库检出时,您需要选择 Create a new repository location 并单击 Next。这将为您打开如图 3 所示的对话框:

3. 为存储库键入 URL

您在这里提供存储库的 URL。这只是一个普通的 http URL,如 http://svn.apache.org/repos/asf/xerces/java/。这一次单击 Next 时,Eclipse 连接到存储库,并查找可检出的文件夹。通常有三个文件夹:branchestags trunk,如图 4 所示。Branches 文件夹用于试验。Tags 通常标识较老的、已发布的软件版本。而大多数时候,您都希望在主分支上工作(CVS 称之为 HEAD),因此选择 trunk 并单击 Next

4. 选择要检出的修订版

您现在有两个选择:Check out as a Project configured using the New Project Wizard Check out as a project in the workspace,如图 5 所示。您可按自己的需要任意选择,您可能希望为项目命名,因为默认名称为 “trunk”。最后,单击 Finish

5. 检出项目的两种方法

Eclipse 现在从您选择的分支、主干或标记中下载所有源文件。如果您选择的是 Check out as a project in the workspace,则必须完成 Eclipse New Project 向导,以设置编译器级别、项目布局和其他选项。如果您未使用 New Project 向导,则需要手动设置构建路径和其他选项,就像您在自己的文件系统的一个目录中创建了一个项目那样。确实,您所做的与那极为相似。所有文件都是本地存储的。对于构建、运行和调试这样的普通操作,Eclipse 不关心文件是否已为版本控制检出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值