该文是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后生成的版本号;即使删除掉部分版本也不会影响版本库的读取和显示;但是基础版本丢失会使版本库无法访问;