序言

目录

读者
怎样阅读本书
本书约定
排版习惯
图标
本书的结构
本书是免费的
致谢
来自 Ben Collins-Sussman
来自 Brian W. Fitzpatrick
来自 C. Michael Pilato
Subversion是什么?
Subversion的历史
Subversion的特性
Subversion的架构
Subversion的组件
 

即使你能确认什么是完美,也不要让完美成为好的敌人,更何况你不能确认。因为落入过去陷阱的不悦,你会在设计时因为担心自己的缺陷而无所作为。

 
 --Greg Hudson

在开源软件世界,长久以来,并行版本系统(CVS)一直是版本控制工具的唯一选择。事实证明,这个选择不错。CVS的自由软件身份,无约束的处事态度,和对网络化操作的支持(网络使众多身处不同地方的程序员可以共享他们的工作成果),正符合了开源世界协作的精神,CVS和它半混乱状态的开发模式已成为开源文化的基石。

但是,CVS也并不是没有缺陷,而修正这些缺陷必定要耗费很大的精力。而Subversion则是以CVS继任者的面目出现的新型版本控制系统。Subversion的设计者们力图通过两方面的努力赢得CVS用户的青睐:保持开源系统的设计(以及“界面风格”)与CVS尽可能类似,同时尽力弥补CVS许多显著的缺陷。这些努力的结果使得从CVS迁移到Subversion不需要作出重大的变革,Subversion确实是非常强大、非常有用和非常灵活的工具。并且很重要的一点,几乎新开的开源项目都选择了Subversion替代CVS。

本书是为Subversion 1.4系列撰写的。在书中,我们尽力涵盖Subversion的所有内容。但是,Subversion有一个兴盛和充满活力的开发社区,已有许多新的特性和改进措施计划在Subversion新版本中实现,本书中讲述的命令和特性可能会有所变化。

读者

本书是为了那些在计算机领域有丰富知识,并且希望使用Subversion管理数据的人士准备的。尽管Subversion可以在多种不同的操作系统上运行,但其基本用户操作界面是基于命令行的,也就是我们将要在本书中讲述和使用的命令行工具(svn)。

出于一致性的考虑,本书的例子假定读者使用的是类Unix的操作系统,并且熟悉Unix和命令行界面。当然,svn程序也可以在入Microsoft Windows这样的非Unix平台上运行,除了一些微小的不同,如使用反斜线(\)代替正斜线(/)作为路径分隔符,在Windows上运行svn程序的输入和输出与在Unix平台上运行完全一致。

大多数读者可能是那些需要跟踪代码变化的程序员或者系统管理员,这是Subversion最普遍的用途,因此这个场景贯穿于整本书的例子中。但是Subversion可以用来管理任何类型的数据:图像、音乐、数据库、文档等等。对于Subversion,数据就是数据而已。

本书假定读者从来没有使用过任何版本控制工具,同时,我们也努力使CVS用户能够轻松的投入到Subversion使用当中,不时会出现一些涉及CVS的内容,此外,在附录的一个章节中总结了Subversion和CVS的区别。

需要说明的是,所有源代码示例仅仅是例子而已。这些例子需要通过正确编译参数进行编译,在这里列举它们只是为了说明特定的场景,并非为了展示优秀的编码风格。