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

svn版本库目录结构的更多相关文章

  1. linux 创建svn版本库,并在svn上配置checkstyle做代码风格检查

    一.创建SVN版本库 1.安装svn服务器 yum install subversion 2.查看版本 svnserve --version 3.建立SVN版本库目录(即你的SVN服务器里面的文件存放 ...

  2. SVN版本库(访问权限)配置实例笔记

    http://blog.csdn.net/zjianbo/article/details/8578297 SVN版本库(访问权限)配置实例笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. ...

  3. svn 版本库的创建和配置

    1.创建SVN版本库 mkdir trunk svnadmin create /root/trunk/svntest #这里是路径和即将创建的版本库名称 2.配置svn cd /root/trunk/ ...

  4. 工作随笔——使用svnsync实时备份SVN版本库

    前段时间把SVN版本库从win迁移到了Linux上,没隔几天那台win的磁盘就严重坏道了....这TMD什么运气! 花费了点时间研究了下svn自己的同步工具.写个日志记录下. 注意:svnsync要求 ...

  5. 用svnsync 同步备份 svn 版本库 从一台服务器到另一台服务器

    如用svnsync 同步备份两台机器的svn .(就以linux服务器到windows服务器为例子) 要同步的项目名称:source_svn svn 版本库1 .4 以上 源目录:           ...

  6. linux上svn版本库创建小记

    [新建svn仓库] 先创建一个文件夹mkdir /opt/svn/wechat;   然后创建svn版本库    svnadmin create /opt/svn/wechat;   [创建用户组权限 ...

  7. Linux 搭建svn版本库

    一.安装svn服务器端yum install subversion      从镜像下载安装svn服务器端 如果后面执行“svnadmin create /usr/local/svn/sunny”提示 ...

  8. 批量自动更新SVN版本库 - Windows

    开发过程中每天都要从SVN代码库里一个一个的update各个项目代码,不仅效率实在是低,也不符合程序员的"懒"精神,由于是在Windows环境做开发,自然就想到了使用bat来实现自 ...

  9. SVN版本库备份和恢复

    1.版本库备份 1.1.svnadmin dump方式备份 此方法借助的是Subversion官网推荐的svnadmin dump备份方式,它的优点是比较灵活,既可以进行全量备份又可以进行增量备份,并 ...

随机推荐

  1. mac 安装PyQt5

    PyQt5官方安装教程指出2种安装方法: Installing from Wheels Building and Installing from Source 网上搜罗的大多是按照第二种方法安装的,本 ...

  2. 12、Django简易框架

    安装:  tar -zxvf Django-1.5.1.tar.gz   cd Django-1.5.1 [root@likun Django-1.5.1]# ls [root@likun Djang ...

  3. ylbtech-dbs-m-ele(饿了么)

    ylbtech-dbs:ylbtech-m-ele(饿了么) -- =============================================-- DatabaseName:Ele - ...

  4. iOS:Objective-c的MD5/SHA1加密算法的实现

    介绍: Objective-c实现MD5和SHA1算法相对还是比较简单的,可以直接调用系统的C/C++共享库来实现调用MD5即Message Digest Algorithm 5(信息-摘要算法 5) ...

  5. javascript快速入门19--定位

    元素尺寸 获取元素尺寸可以使用下面几种方式 元素的style属性width,height,但这些属性往往返回空值,因为它们只能返回使用行内style属性定义在元素上的样式 元素的currentStyl ...

  6. 对象内部属性[[Class]]

    1.概述 所有的typeof返回值为‘object’的对象都包含一个内部属性[[Class]],我们将它可以看做内部的分类,而非传统面向对象意义的分类.这个属性无法直接访问,一般通过Object.pr ...

  7. 经验总结54--搭建linux虚拟机环境

    好久没写博客了.写一篇环境搭建吧. 自己做java,有时会接触linux环境,自己能够搭建一个,方便自己做实验和学习. 1.下载VM11. 下载并依照VM:http://rj.baidu.com/so ...

  8. Android 必知必会 - 依据包名推断 App 执行状态

    假设移动端訪问不佳,请訪问: 掘金版 Github 版 获取指定包名的 APP 是否还在后台执行,推断 APP 是否存活. 背景 能够依据 App 是否有 Service 分两类情况处理: 没有 Se ...

  9. (转)C的代码是如何变成程序的

    原文链接:http://blog.csdn.net/fz_ywj/article/details/8769825 C语言是一门典型的编译语言,源代码文件需要编译成目标代码文件才能运行.可以认为程序文件 ...

  10. <转>c++ builder JSONCPP 注意事项 XE2 解决编译问题 _Mfl

    在C++Builder中使用JSONCPP需要注意的问题 1.使用STL的MAP而不是内建的MAP这个问题实际上和编译器无关.内建的MAP不是很稳定,当解析数据大于600K左右时,会崩溃.虽然一般来说 ...