Write by lyc at 2018-06-16
Subversion官网
svn客户端
官方手册

一、SVN介绍

1.什么是SVN

svn(subversion)版本管理工具,与CVS管理工具一样,SVN是一个跨平台的开源版本控制系统。svn版本管理工具管理着时间改变的各种数据。这些数据放置在一个中央资料档案库(repository)中,这个档案库很像一个普通的文件服务器或者FTP服务器,但是,与其他服务器不同的是,svn会备份并记录每个文件每一次的修改更新变动。这样我们就可以把任意一个时间点的档案恢复到想要的某一个旧的版本,当然也可以直接浏览指定文件的更新历史记录。

2.SVN和Git的区别

svn集中式版本控制系统

svn版本控制系统是集中式的数据管理,存在一个中央版本库,所有开发人员本地开发所使用的代码都来自这个版本库,提交代码也都必须提交到这个中央版本库。

git分布式的版本控制

git是Linus开发的,所以很自然的git和linux文件系统结合的比较紧密,以至于在windows上你必须使用cygwin才能使其完美的工作。

git中没有中央版本库的说法了,凡是为了开发小组的代码共享,我们通常还是会搭建一个远程的git仓库。

但是和svn不同的是,本地也包含了一个完整的git仓库,从某种程度上说本地的仓库和远程的仓库在身份上是等价的,没有主从之分。

如果你的项目是闭源项目,或者你习惯于以往的集中式的管理模式的话,那么git下你也可以像svn那样工作,只是流程中可能会增加一些步骤。

二、SVN服务运行模式与访问方式

1.SVN服务端3种运行方式

  • 独立服务器访问:svn://svn.etiantian.org/sadoc
  • 借助apache等http服务:http://svn.etiantian.org/sadoc
    • 单独安装apache+svn(配置复杂)
    • CSVN(apache+svn)是一个单独的整合软件,带web界面管理的SVN软件
  • 本地直接访问:file://data/svn_data/sadoc

2.SVN客户端访问方式

SVN客户端可以通过多种方式访问服务器端,例如:本地磁盘访问,或各种各样不同的网络协议访问,但一个版本库地址永远都是一个URL,URL反应了访问方法:

访问方式 说明
file:// 直接通过本地磁盘或者网络磁盘访问版本库。
http:// 通过WebDAV协议访问支持Subversion的Apache服务器。
https:// 与http://相似,但是用SSL加密访问。
svn:// 通过TCP/IP自定义协议访问svnserver服务器。
svn+ssh:// 通过认证并加密的TCP/IP自定义协议访问svnserver服务器。

三、SVN档案库数据格式

svn存储版本数据有2种方式:DBD(一种事物安全型表类型)和FSFS(一种不需要数据库的存储系统)。因为DBD方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

DBD

伯克利DB,版本库可以使用的一种经过充分测试的后台数据库实现,不能再通过网络共享的文件系统上使用,伯克利DB是Subversion1.2版本以前的缺省版本库格式。

FSFS

FSFS是一个专用于Subversion版本库的文件系统后端,可以使用网络文件系统(例如NFS或SMBFS)。是1.2版本及其后的缺省版本库格式。

SVN是基于关系数据库的(BerkleyDB)或一系列二进制文件的(FS_FS)。一方面这解决了许多问题(例如,并行读写共享文件)以及添加了许多新功能(例如运行时的事物特性),然而另一方面,数据存储由此变得不透明,不能像ftp,samba,nfs等能看到实体文件了。