1. 版本库

Subversion 是一个集中式的信息共享系统。版本库是 Subversion 的核心部分,是数据的中央仓库。版本库以典型的文件和目录结构形式文件系统树来保存信息。任意数量的客户端连接到 Subversion 版本库,读取, 修改这些文件。客户端通过写数据将信息分享给其他人,通过读取数据获取别人共享的信息。图 1.1 “一个典型的客户/服务器系统”展示了这种系统:

图 1.1. 一个典型的客户/服务器系统

一个典型的客户/服务器系统

这有什么意义吗?说了这么多,Subversion 听起来和一般的文件服务器没什么不同。事实上,Subversion 的版本库的确一种文件服务器,但不是一般的文件服务器。Subversion 版本库的特别之处在于,它会记录每一次改变:每个文件的改变,甚至是目录树本身的改变,例如文件和目录的添加, 删除和重新组织。

一般情况下,客户端从版本库中获取的数据是文件系统树中的最新数据。但是客户端也具备查看文件系统树以前任何一个状态的能力。举个例子,客户端有时会对一些历史性问题感兴趣,比如上星期三时的目录结构是什么样的?,或者谁最后一个修改了这个文件,都修改了什么?这些都是版本控制系统的核心问题:设计用来记录和跟踪数据变化的系统。