本文档旨在描述 Apache™ Subversion® 的 1.7.x 系列。如果您运行的是其他版本的 Subversion,强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅适合您 Subversion 版本的文档。

定义 Subversion 仓库

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

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

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

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

conf/

此目录是配置文件的容器。

db/

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

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 正在使用并且尚未配置为将活动数据库存储在其他位置。有关更多信息,请参见 名为“指令”的部分,位于 第 9 章,Subversion 完整参考 中。

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



[38] 严格来说,Subversion 并没有规定版本化数据必须存储在这里,并且已知(尽管是专有的)替代后端存储实现实际上并没有将数据存储在这个目录中。

TortoiseSVN 官方中文版 1.14.7 发布