本文档旨在描述 Subversion 1.4。如果您正在运行更新版本的 Subversion,我们强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅适合您 Subversion 版本的本书版本。
在深入探讨版本库管理的更广泛主题之前,让我们进一步定义什么是版本库。它是什么样子?它是什么感觉?它喜欢热的还是冰的茶,加糖还是柠檬?作为管理员,您需要从字面意义上的操作系统级别视角来理解版本库的组成——版本库在非 Subversion 工具中是什么样子以及如何运行——以及从逻辑角度来理解版本库的组成——处理版本库中数据是如何表示的内部。
通过典型的文件浏览器应用程序(如 Windows 资源管理器)或基于命令行的文件系统导航工具的视角来看,Subversion 版本库只是一个装满了东西的目录。其中一些子目录包含人类可读的配置文件,一些子目录包含一些不可读的数据文件,等等。与 Subversion 设计的其他领域一样,模块化受到高度重视,分层组织优先于混乱的混乱。因此,从螺母和螺栓的角度对典型版本库进行浅显的观察就足以揭示版本库的基本组件。
$ ls repos conf/ dav/ db/ format hooks/ locks/ README.txt
以下是对您在此目录列表中看到的具体内容的快速概述。(不要被术语所困扰——这些组件的详细介绍在本节和其他章节中都有。
包含版本库配置文件的目录。
为 mod_dav_svn 提供的用于其私有管理数据的目录。
所有版本化数据的存储库。
包含一个表示版本库布局的版本号的单个整数的文件。
一个充满钩子脚本模板的目录(以及钩子脚本本身,一旦您安装了一些)。
用于 Subversion 版本库锁定文件的目录,用于跟踪访问版本库的访问者。
一个文件,其内容仅告知读者他们正在查看 Subversion 版本库。
当然,当通过 Subversion 库访问时,这个原本平淡无奇的文件和目录集合突然变成了一个虚拟的版本化文件系统的实现,完整的功能包括可定制的事件触发器。这个文件系统有它自己的目录和文件概念,与真实文件系统(如 NTFS、FAT32、ext3 等)对这些事物的概念非常相似。但这是一个特殊的文件系统——它将这些目录和文件从修订版中悬挂起来,将您对它们所做的所有更改安全地存储起来,并永远可以访问。这是您的所有版本化数据存储的地方。