This text is a work in progress—highly subject to change—and may not accurately describe any released version of the Apache™ Subversion® software. Bookmarking or otherwise referring others to this page is probably not such a smart idea. Please visit http://www.svnbook.com/ for stable versions of this book.
在进入与仓库管理有关的主题之前, 先给出仓库的定义. 它是什么样的? 感觉怎么样? 它喜欢喝热茶还是冰茶, 加不加糖或柠檬? 作为一名管理员, 人们 期望你能同时从字面和系统层面理解仓库的组成—仓库看起来是什么 样的, 被 Subversion 以外的工具操作时如何反应; 还要从逻辑层面理解在 仓库 内部 数据是如何表示的.
如果站在文件浏览器 (例如 Windows 资源管理器) 或基于命令行的文件 系统导航工具来看, Subversion 仓库只是一个包含了众多数据的普通目录, 其中一些子目录包含了人类可读的配置文件, 还有些子目录包含的是人类不可 读的文件. 在设计 Subversion 时, 开发人员非常注意模块化与层次化, 因此 简单地浏览一个典型仓库, 对于展示仓库的基本组件来说已经足够了.
$ ls repos conf/ db/ format hooks/ locks/ README.txt
下面是关于目录中的文件及其子目录的简单介绍. (不要拘泥于术语的具体 意思—更详细的内容将在本章的其他地方进行介绍)
存放配置文件的目录.
该目录包含了与所有版本化数据相关的数据. [46]
该文件描述了仓库的内部组织结构. (目录 db/
有时候也会有一个叫做 format
的文件, 这个
format
仅仅是在描述 db/
的内容, 这两个 format
之间并没有关系.)
该目录包含了钩子脚本模板和已安装的钩子脚本.
Subversion 用该目录存放仓库的锁文件, 锁文件用于管理仓库的并发 访问.
包含了一小段内容的文本文件, 文件的内容仅仅是为了提醒计算机 用户该文件所在的目录是一个 Subversion 仓库.
注意 | |
---|---|
在 Subversion 1.5 之前, 仓库还有一个子目录 |
当然, 当我们通过 Subversion 库函数访问仓库时, 这些文件与目录就成为 了一种虚拟的, 版本化的文件系统的实现, 并且搭配了可定制的事件触发器. 这个文件系统对文件和目录的概念都 有自己的理解, 和真正的文件系统 (例如 NTFS, FAT32, ext3 等) 非常类似, 但它又比较特殊—它把文件和目录悬挂在版本号上, 安全地记录用户曾经 对它们做出的修改, 并保证这些修改是永远可访问的. 这就是存放用户所有 版本化数据的地方.