SVN两种存储方式BDB和FSFS的比较,以及svn上传和下载文件
SVN中两种存储方式的比较(BDB vs. FSFS)
From:http://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/
Subversion 的版本库(repository),就是位于服务器端,统一管理和储存数据的地方。本文中,我们以 Linux 为例,介绍在服务器端配置和管理 Subversion 版本库的基本方法。
要创建一个版本库,首先要确定采用哪种数据存储方式。在 Subversion 中,版本库的数据存储有两种方式,一种是在 Berkeley DB 数据库中存放数据;另一种是使用普通文件,采用自定义的格式来储存,称为 FSFS。
两种存放方式各有优缺点,读者可以参考 http://svnbook.org/ 上面的文档来了解两者详细的比较和区别,这里,我们仅引用上述文档当中的简单对照表,给出一个简明的比较。
特性 | 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
svn上传文件的存储:
上传的文件放在SVN服务器的哪个目录下
SVN服务器版本库有两种格式,
一种为FSFS,
一种为BDB
把文件上传到SVN版本库后,上传的文件不再以文件原来的格式存储,而是被svn以它自定义的格式压缩成版本库数据,存放在版本库中。
如果是FSFS格式,这些数据存放在版本库的db目录中,里面的revs和revprops分别存放着每次提交的差异数据和日志等信息
首先 svn help 可以看到 svn 所支持的全部命令:
命令不多,如果用过Tortoise SVN的客户端,从字面上也不难理解这些命令所代表的含义。
首先我需要把我的项目 Checkout 出来。这个过程使用的命令是 svn checkout 或者 svn co
提交代码
对代码进行修改后,需要提交代码到SVN中,这时要用到 svn commit / svn ci 命令。提交的时候,最好使用 –m 带上注释,这样今后查看的时候也比较方便。
更新文件
每次开始编码前,最好更新一下代码,看看其他人是否修改过代码。更新的命令为: svn update / svn up
可以切换到希望更新的目录,直接执行 svn update 而不必跟特定的文件或目录,也可以自己指定需要更新的文件或目录。
查看日志
这个功能在发现代码发生了变化,需要了解都有哪些变化的时候特别有用,前提是每一次的更新大家都写了注释。
使用命令 svn log :
[root@localhost config]# svn log config.php
------------------------------------------------------------------------
r79832 | shiqiang | 2010-06-29 11:16:35 +0800 (Tue, 29 Jun 2010) | 1 lineChange Config
------------------------------------------------------------------------
r76996 | shiqiang | 2010-06-22 13:51:33 +0800 (Tue, 22 Jun 2010) | 1 lineactive $Id$s
基本上SVN的常用命令有这两个就可以开始工作了,但是SVN其实功能特别强大,在DIFF和Conflict处理方面,还没有研究过Linux下如何进行解决,另外还有Tag和Branch的功能。用好了SVN可以对于项目管理提供一个非常好的工具。