本文档尚未完善,内容可能会随时更改,可能不准确地描述 Apache™ Subversion® 软件的任何已发布版本。将此页面添加为书签或以其他方式向他人推荐可能不是一个明智的选择。请访问 https://svnbook.subversion.org.cn/ 获取本书的稳定版本。

定义 Subversion 仓库

在深入探讨仓库管理的更广泛主题之前,让我们进一步定义什么是仓库。它看起来像什么?它感觉如何?它喜欢喝热茶还是冰茶,加糖还是加柠檬?作为管理员,您需要从字面上的操作系统级别角度(即仓库在非 Subversion 工具方面的表现)和逻辑角度(即处理仓库 内部的数据表示方式)来理解仓库的构成。

通过典型的文件浏览器应用程序(如 Windows 资源管理器)或基于命令行的文件系统导航工具,Subversion 仓库看起来只是一个充满了各种东西的目录。它包含一些包含人类可读配置文件的子目录,一些包含不太人类可读的数据文件的子目录,等等。与 Subversion 设计的其他领域一样,模块化被高度重视,层次结构组织优先于混乱。因此,从基础的角度来看,对典型仓库的浅层浏览足以揭示仓库的基本组成部分。

$ ls repos
conf/  db/  format  hooks/  locks/  README.txt

以下是对此目录列表中所见内容的快速概述。(不要被术语所困扰——这些组件的详细内容在本节和其他章节中都有介绍。)

conf/

此目录用于存放配置文件。

db/

此目录包含所有版本化数据的存储区。[49]

format

此文件描述了仓库的内部组织方案。(事实证明,db/ 子目录有时也会包含一个 format 文件,该文件仅描述该子目录的内容,不应与该文件混淆。)

hooks/

此目录包含挂钩脚本模板和挂钩脚本(如果有已安装的脚本)。

locks/

Subversion 使用此目录来存放仓库锁文件,用于管理对仓库的并发访问。

README.txt

这是一个简短的文本文件,仅包含一个通知,告知读者他们正在查看的目录是一个 Subversion 仓库。

[Note] 注意

在 Subversion 1.5 之前,磁盘上的仓库结构也始终包含一个 dav 子目录。mod_dav_svn 使用此目录存储有关 WebDAV 活动的信息——将高级 WebDAV 协议概念映射到 Subversion 提交事务。Subversion 1.5 改变了这种行为,将活动目录的所有权以及配置其位置的能力转移到了 mod_dav_svn 本身。现在,新仓库不一定会有 dav 子目录,除非 mod_dav_svn 正在使用,并且尚未配置为将活动数据库存储在其他位置。有关更多信息,请参阅 名为“mod_dav_svn 配置指令”的部分

当然,当通过 Subversion 库访问时,这个原本不起眼的集合文件和目录突然变成了一个虚拟版本化文件系统的实现,包括可定制的事件触发器。这个文件系统有自己的目录和文件概念,与真实文件系统(如 NTFS、FAT32、ext3 等)的概念非常相似。但这是一个特殊的文件系统——它将这些目录和文件挂接到修订版上,将您所做的一切更改安全地存储起来,并永远可供访问。这就是所有版本化数据所处的位置。



[49] 严格来说,Subversion 并没有规定版本化数据必须存储在此处,并且有一些已知(虽然是专有的)替代后端存储实现实际上并没有将数据存储在此目录中。

[50] 虽然它通常被发音为 fuzz-fuzz(根据 Jack Repenning 的说法),但本书假设读者在想 eff-ess-eff-ess

TortoiseSVN 官方中文版 1.14.7 发布