该文是svn源代码分析系列文章服务端架构中的一篇,主要描述svn服务端版本库数据存储目录结构,并且对这些文件以及目录的作用进行简单分析。使用“svnmadin create”命令创建初始化版本库后,使用“tree”命令打印出没有经过任何修改的原始版本库目录。
$ svnadmin /svnrepos/morepos $ tree /svnrepos/morepos -p morepos |-- [-rw-r--r--] README.txt |-- [drwxr-xr-x] conf | |-- [-rw-r--r--] authz | |-- [-rw-r--r--] passwd | `-- [-rw-r--r--] svnserve.conf |-- [drwxr-sr-x] db | |-- [-rw-r--r--] current | |-- [-r--r--r--] format | |-- [-rw-r--r--] fs-type | |-- [-rw-r--r--] fsfs.conf | |-- [-rw-r--r--] min-unpacked-rev | |-- [drwxr-sr-x] revprops | | `-- [drwxr-sr-x] 0 | | `-- [-r--r--r--] 0 | |-- [drwxr-sr-x] revs | | `-- [drwxr-sr-x] 0 | | `-- [-r--r--r--] 0 | |-- [drwxr-sr-x] transactions | |-- [-rw-r--r--] txn-current | |-- [-rw-r--r--] txn-current-lock | |-- [drwxr-sr-x] txn-protorevs | |-- [-rw-r--r--] uuid | `-- [-rw-r--r--] write-lock |-- [-r--r--r--] format |-- [drwxr-xr-x] hooks | |-- [-rw-r--r--] post-commit.tmpl | |-- [-rw-r--r--] post-lock.tmpl | |-- [-rw-r--r--] post-revprop-change.tmpl | |-- [-rw-r--r--] post-unlock.tmpl | |-- [-rw-r--r--] pre-commit.tmpl | |-- [-rw-r--r--] pre-lock.tmpl | |-- [-rw-r--r--] pre-revprop-change.tmpl | |-- [-rw-r--r--] pre-unlock.tmpl | `-- [-rw-r--r--] start-commit.tmpl `-- [drwxr-xr-x] locks |-- [-rw-r--r--] db-logs.lock `-- [-rw-r--r--] db.lock 10 directories, 27 files
路径 | 类型 | 作用 |
conf | 目录 | 存放版本库所用配置文件的目录 |
dav | 目录 | 供mod_dav_svn使用 |
db | 目录 | 版本数据存储目录 |
db/fs-type | 文件 | 版本库数据真实存储格式,SVN有fsfs和bdb两种存储格式 |
db/revprops | 目录 | 记录版本属性 |
db/revs | 目录 | 版本库数据存储真实目录 |
db/uuid | 文件 | 存储版本库唯一标识号,参考《svn版本库标识uuid简述》 |
db/txn-current | 文件 | 记录当前事务 |
format | 文件 | 存储一个整数的文件,此整数代表库层次结构版本 |
hooks | 目录 | 存放版本库勾子目录 |
locks | 目录 | 存储库锁目录,用来跟踪库的访问者 |
其中revs下面是以目录组织的版本结构,每1000个版本组成一个目录,每个版本自成一个文件,文件名即为commit后生成的版本号;即使删除掉部分版本也不会影响版本库的读取和显示;但是基础版本丢失会使版本库无法访问;