From:http://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/php
Subversion 的版本库(repository),就是位于服务器端,统一管理和储存数据的地方。本文中,咱们以 Linux 为例,介绍在服务器端配置和管理 Subversion 版本库的基本方法。java
要建立一个版本库,首先要肯定采用哪一种数据存储方式。在 Subversion 中,版本库的数据存储有两种方式,一种是在 Berkeley DB 数据库中存放数据;另外一种是使用普通文件,采用自定义的格式来储存,称为 FSFS。数据库
两种存放方式各有优缺点,读者能够参考 http://svnbook.org/ 上面的文档来了解二者详细的比较和区别,这里,咱们仅引用上述文档当中的简单对照表,给出一个简明的比较。apache
特性 | Berkeley DB | FSFS |
---|---|---|
对操做中断的敏感 | 很敏感;系统崩溃或者权限问题会致使数据库“塞住”,须要按期进行恢复。 | 不 敏感 |
可只读加载 | 不能 | 可 以 |
存储平台无关 | 不能 | 可 以 |
可从网络文件系统访问 | 不能 | 可 以 |
版本库大小 | 稍大 | 稍 小 |
扩展性:修订版本树数量 | 无限 制 | 某些本地文件系统在处理单一目录包含上千个条目时会出现问题。 |
扩展性:文件较多的目录 | 较慢 | 较慢 |
检出最新代码的速度 | 较快 | 能够 |
大量提交的速度 | 较慢,但时间被分配在整个提交操做中 | 较 快,但最后较长的延时可能会致使客户端操做超时 |
组 访问权处理 | 对于用户的 umask 设置十分敏感,最好只由一个用户访问。 | 对 umask 设置不敏感 |
功能成熟时间 | 2001 年 | 2004 年 |
肯定了具体的数据存储类型,只要在命令行当中执行 svnadmin
命令就能够建立一个 Subversion 版本库,命令以下:服务器
svn上传文件的存储:网络
上传的文件放在SVN服务器的哪一个目录下
SVN服务器版本库有两种格式,
一种为FSFS,
一种为BDB
把文件上传到SVN版本库后,上传的文件再也不以文件原来的格式存储,而是被svn以它自定义的格式压缩成版本库数据,存放在版本库中。
若是是FSFS格式,这些数据存放在版本库的db目录中,里面的revs和revprops分别存放着每次提交的差别数据和日志等信息
首先 svn help 能够看到 svn 所支持的所有命令:
命令很少,若是用过Tortoise SVN的客户端,从字面上也不难理解这些命令所表明的含义。svn
首先我须要把个人项目 Checkout 出来。这个过程使用的命令是 svn checkout 或者 svn co工具
提交代码post
对代码进行修改后,须要提交代码到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能够对于项目管理提供一个很是好的工具。