本手册旨在描述 Subversion 1.1。如果您正在运行较新版本的 Subversion,我们强烈建议您访问 https://svnbook.subversion.org.cn/ 并参考适合您 Subversion 版本的书籍版本。
本章是关于 Subversion 的简短、非正式的介绍。如果您是版本控制新手,本章绝对适合您。我们将从讨论一般的版本控制概念开始,逐步深入了解 Subversion 背后的特定理念,并展示一些简单的 Subversion 使用示例。
虽然本章中的示例展示了人们共享程序源代码集合,但请记住 Subversion 可以管理任何类型的文件集合,它不局限于帮助计算机程序员。
Subversion 是一个用于共享信息的集中式系统。它的核心是版本库,它是数据的中心存储库。版本库以 文件系统树 的形式存储信息,即典型的文件和目录层次结构。任意数量的 客户端 连接到版本库,然后读写这些文件。通过写入数据,客户端将信息提供给其他人;通过读取数据,客户端从其他人那里接收信息。图 2.1,“典型的客户端/服务器系统” 说明了这一点。
为什么这很有趣?到目前为止,这听起来像是对典型文件服务器的定义。事实上,版本库 是一种文件服务器,但它不是您通常见到的那种。Subversion 版本库的特别之处在于它 会记录所有写入它的更改:对每个文件的每个更改,甚至对目录树本身的更改,例如文件的添加、删除和重新排列。
当客户端从版本库读取数据时,它通常只看到文件系统树的最新版本。但是客户端也可以查看文件系统树的 先前状态。例如,客户端可以询问诸如“上周三这个目录包含什么?”或“谁是最后修改此文件的人,他们做了什么更改?”之类的问题。这些问题是任何 版本控制系统 的核心:旨在记录和跟踪数据随时间变化的系统。