SVN两种存储方式BDB和FSFS的比较,以及svn上传和下载文件

SVN中两种存储方式的比较(BDB vs. FSFS)

转载 2010年05月13日 20:44:00

From:http://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/

 

Subversion 的版本库(repository),就是位于服务器端,统一管理和储存数据的地方。本文中,我们以 Linux 为例,介绍在服务器端配置和管理 Subversion 版本库的基本方法。

要创建一个版本库,首先要确定采用哪种数据存储方式。在 Subversion 中,版本库的数据存储有两种方式,一种是在 Berkeley DB 数据库中存放数据;另一种是使用普通文件,采用自定义的格式来储存,称为 FSFS。

两种存放方式各有优缺点,读者可以参考 http://svnbook.org/ 上面的文档来了解两者详细的比较和区别,这里,我们仅引用上述文档当中的简单对照表,给出一个简明的比较。

特性Berkeley DBFSFS
对操作中断的敏感 很敏感;系统崩溃或者权限问题会导致数据库“塞住”,需要定期进行恢复。 不 敏感
可只读加载 不能 可 以
存储平台无关 不能 可 以
可从网络文件系统访问 不能 可 以
版本库大小 稍大 稍 小
扩展性:修订版本树数量 无限 制 某些本地文件系统在处理单一目录包含上千个条目时会出现问题。
扩展性:文件较多的目录 较慢 较慢
检出最新代码的速度 较快 可以
大量提交的速度 较慢,但时间被分配在整个提交操作中 较 快,但最后较长的延时可能会导致客户端操作超时
组 访问权处理 对于用户的 umask 设置十分敏感,最好只由一个用户访问。 对 umask 设置不敏感
功能成熟时间 2001 年 2004 年

确定了具体的数据存储类型,只要在命令行当中执行 svnadmin 命令就可以创建一个 Subversion 版本库,命令如下:

 

[c-sharp] view plain copy
 
  1. # 创建文件夹  
  2. $ mkdir /etc/svn/  
  3. $ mkdir /etc/svn/repos  
  4. # 运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb  
  5. $ 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 line

Change Config 
------------------------------------------------------------------------ 
r76996 | shiqiang | 2010-06-22 13:51:33 +0800 (Tue, 22 Jun 2010) | 1 line

active $Id$s

 

基本上SVN的常用命令有这两个就可以开始工作了,但是SVN其实功能特别强大,在DIFF和Conflict处理方面,还没有研究过Linux下如何进行解决,另外还有Tag和Branch的功能。用好了SVN可以对于项目管理提供一个非常好的工具。

posted @ 2017-10-19 15:50  liriwang123  阅读(330)  评论(0编辑  收藏  举报