“如果C是一条足够吊死你自己的绳子,那么就把Subversion当作存放绳子的工具吧。” —Brian W. Fitzpatrick
在开源软件世界,并行版本系统(CVS)一直是版本控制长久以来的唯一选择。事实证明,这是个正确的选择。CVS本身是自由软件,不加限制的处事风格,对网络化操作的支持(众多身处不同地方的程序员可以共享他们的工作),都非常符合开源世界的协作精神。CVS和它半混乱状态的开发模型已成为开源文化的基石。
但是,和其它许多工具一样,CVS开始显露出衰老的迹象。而Subversion,正是以CVS继任者的面目出现的新型版本控制系统。Subversion的设计者们力图通过两方面的努力赢得CVS用户的青睐:保持构建开源软件版本控制系统的方式(以及视觉和感觉上)与CVS尽可能类似,同时尽力弥补CVS许多显著的缺陷。这些努力的结果使得从CVS迁移到Subversion不需要作出重大的变革,Subversion确实是非常强大、非常有用和非常灵活的工具。
本书是为Subversion 1.2系列撰写的。在书中,我们尽力涵盖Subversion的所有内容。但是,Subversion有一个兴盛和充满活力的开发社区,已有许多新的特性和改进措施计划在新版本的Subversion中实现,本书中讲述的命令和特性可能会有所变化。
本书是为了那些在计算机领域有丰富知识,并且希望使用Subversion管理数据的人士准备的。尽管Subversion可以在多种不同的操作系统上运行,但其基本用户操作界面是工作于命令行界面下的,也就是我们将要在本书中讲述和使用的命令行工具(svn)。出于一致性的考虑,本书的例子假定读者使用的是类Unix的操作系统,并且熟悉Unix和命令行界面。
同样,svn程序也可以在入Microsoft Windows这样的非Unix平台上运行。除了一些微小的不同,如使用反斜线(\
)代替正斜线(/
)作为路径分隔符,在Windows上运行svn程序的输入和输出与在Unix平台上运行完全一致。不过在Cygwin(Windows下的模拟Unix的环境)运行本书的例子可能更容易成功。
大多数读者可能是那些需要跟踪代码变化的程序员或者系统管理员。这是Subversion最普遍的用途,因此这个场景贯穿于整本书的例子中。但是Subversion是可以用来管理任何类型的数据:图像、音乐、数据库、文档,等等。对于Subversion,数据不过是数据而已。
本书假定读者从来没有使用过任何版本控制工具,同时,我们也努力使CVS用户能够轻而易举的跃入Subversion中。有时某些条目可能会涉及到CVS,此外,在附录的一个章节中总结了Subversion和CVS的区别。