目录
“如果C给你足够的绳子吊死你自己,试着用Subversion作为一种存放绳子的工具。” —Brian W. Fitzpatrick
在开源软件领域,并行版本系统(CVS)一直是版本控制的选择。恰如其分的是,CVS本身是一个自由软件,它的非限制性的技法和对网络操作的支持—允许大量的不同地域分散的程序员可以共享他们工作的特性—非常符合开源软件领域合作的精神,CVS和它半混乱状态的开发模型成为了开源文化的基石。
但是像许多其他工具一样,CVS开始显露出衰老的迹象。Subversion是一个被设计成为CVS继任者的新版本控制系统。设计者通过两个办法来争取现有的CVS用户: 使用它构建一个开源软件系统的版本控制过程,从感觉和体验上与CVS类似,同时Subversion努力弥补CVS许多明显的缺陷,结果就是不需要版本控制系统一个大的革新。Subversion是非常强大、有用及灵活的工具。
这本书是为Subversion 1.1 系列撰写的,我们试图涵盖Subversion的所有内容,但是Subversion有一个兴盛和充满活力的开发社区,已经有许多特性和改进计划在新的版本中实现,可能会与目前这本书中的命令与细节不一致。
这本书是为了那些希望使用Subversion管理他们数据的在计算机领域有丰富知识的人士准备的。Subversion可以在多种不同的操作系统上运行,它的主要用户操作界面是基于命令行的,这就是我们将要在本书中提到的命令行工具(svn)。出于一致性,本书的例子假定读者使用的是类Unix的操作系统,并且熟悉Unix和命令行界面。
那就是说,svn程序可以运行在像Microsoft Windows这样的非Unix平台上。除了一些微小的不同,像用反斜线(\
)代替正斜线(/
)作为路径分隔符,在Windows上运行svn工具进行输入输出和Unix平台上的功能是完全一致的。Windows用户甚至可以发现这个程序能够在Unix仿真环境Cygwin中成功运行。
大多数读者可能是那些需要跟踪代码变化的程序员或者系统管理员。这是Subversion最普通的用途,因此这个场景贯穿于整本书的例子。但是Subversion能够被用来管理任何类型的数据:图像、音乐、数据库、文档等等。对于Subversion,所有的数据仅仅是数据而已。
这本书假定读者从来没有使用过任何版本控制系统,我们也努力使CVS用户能够轻而易举的跳跃到Subversion中。偶尔一些特殊的工具条可能讨论CVS,在最后一个特别的附录中将总结Subversion和CVS的不同。