特性 | Berkeley DB | FSFS |
---|---|---|
对操作中断的敏感 | 很敏感;系统崩溃或者权限问题会导致数据库“塞住”,需要定期进行恢复。 | 不敏感 |
可只读加载 | 不能 | 可以 |
存储平台无关 | 不能 | 可以 |
可从网络文件系统访问 | 不能 | 可以 |
版本库大小 | 稍大 | 稍小 |
扩展性:修订版本树数量 | 无限制 | 某些本地文件系统在处理单一目录包含上千个条目时会出现问题。 |
扩展性:文件较多的目录 | 较慢 | 较慢 |
检出新代码的速度 | 较快 | 可以 |
大量提交的速度 | 较慢,但时间被分配在整个提交操作中 | 较快,但后较长的延时可能会导致客户端操作超时 |
组访问权处理 | 对于用户的 umask 设置十分敏感,好只由一个用户访问。 | 对 umask 设置不敏感 |
功能成熟时间 | 2001 年 | 2004 年 |
确定了具体的数据存储类型,只要在命令行当中执行 svnadmin 命令可以创建一个 Subversion 版本库,命令如下
# 创建文件夹
$ mkdir /etc/svn/
$ mkdir /etc/svn/repos
# 运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb
$ svnadmin create --fs-type fsfs /etc/svn/repos
如果一切正常,命令执行后不会有任何反馈信息而迅速返回,这样,一个新的版本库被创建出来了。我们来查看一下生成的版本库结构:
$ ls -l /etc/svn/repos
总用量 56
drwxrwxr-x 2 robert robert 4096 8月 27 17:27 conf
drwxrwxr-x 2 robert robert 4096 8月 27 17:27 dav
drwxrwsr-x 5 robert robert 4096 8月 27 17:27 db
-r--r--r-- 1 robert robert 2 8月 27 17:27 format
drwxrwxr-x 2 robert robert 4096 8月 27 17:27 hooks
drwxrwxr-x 2 robert robert 4096 8月 27 17:27 locks
-rw-rw-r-- 1 robert robert 229 8月 27 17:27 README.txt
其中,conf 目录下存放了版本库的配置文件,包括用户访问控制和权限控制等内容,文件本身的注释说明十分详细,读者可以根据注释自行配置;dav 目录是提供给 Apache 相关模块的目录,目前为空;db 目录下存放着 Subversion 所要管理的所有受版本控制的数据,不同的存储方式(Berkeley DB 或者 FSFS)下有着不同的目录结构,不过我们一般不用直接修改和查看这个目录下的内容,Subversion 的命令可以安全的操作这个目录;另外,hooks 目录存放着钩子脚本及其模版(一种版本库事件触发程序),locks 目录存放着 Subversion 版本库锁定数据,format 文件记录了版本库的布局版本号。