版本管理之SVN实践教程:基础篇(1):简介&安装

版本管理之SVN实践教程:基础篇(1):简介&安装
subversion简称svn,是vcs(Version Control System)的一种,是集中式版本管理(centralized version control)工具的优秀代表,加之Apache项目的光环,一度在版本管理的工具中占有绝对的主导地位。随着开源项目的推广和git的推进,svn似乎风光不在,但是在企业级开发中仍然占有主要的一席之地。从这篇文章开始将会介绍一下如何使用svn进行开发。

概要信息

项目 说明
开源/闭源 开源
License类别 Apache License
官网 http://subversion.apache.org/
代码管理地址 http://subversion.apache.org/download
开发语言 c,cpp
当前稳定版本 1.10.2

版本管理工具的对比

svn相比于早期的rcs以及现在流行分布式版本管理工具git,一些主要的特点如下:

代表类型工具 版本管理方式 并发控制方式 类型
RCS 对单个文件进行版本管理 文件锁 集中式版本管理
CVS/SVN 对多个文件进行版本管理 先合并后提交 集中式版本管理
git 对多个文件进行版本管理 先提交后合并 分布式式版本管理

分布式 vs 集中式

本地管理

早期的版本管理工具,比如RCS一般通过一个,v文件可以在本地进行保存,但是并不是说RCS就不能进行集中式版本管理,其实在VCS和SVN出现之前的非常早期的大型项目中,你都可以找到现代版本管理工具的一些原型,甚至分布式。比如你只需要结合软连接,将,v进行集中式管理,不同机器之间进行nfs方式挂载,就可以实现网络互通方式下的简单集中式管理。但是这只是利用了一些os的特性而已,早期的一些版本管理工具一般来说都是可以在local进行版本的管理:
版本管理之SVN实践教程:基础篇(1):简介&安装

集中式管理

CVS或者SVN都是集中式管理的典型,这种方式的特点就是使用简单,但是中心依赖性较强,一旦网络出现问题,或者服务故障影响巨大。
版本管理之SVN实践教程:基础篇(1):简介&安装

分布式管理

诸如git这样的分布式管理工具,使用起来没有了集中式对于中心的依赖,本地是整个仓库的副本,但是当副本巨大的时候也会有有些影响,当然通过有效的管理都可以消除。但是分布式本身的特点所带来的影响也是有的,集中式的版本管理往往在提交之前就会发现,但是本地分布式仓库的存在给了一种全新的方式可以先提交再合并,在分支模型管理不好的情况下,可能会带来很多后期Merge的成本。
版本管理之SVN实践教程:基础篇(1):简介&安装

版本支持状况与建议

apache当前建议使用的版本为1.10.2,考虑到项目中可能会有比较旧的版本信息,请参考如下信息进行合理升级

版本 支持状况
1.8.x以及之前版本 不再提供支持
1.9.x版本 提供部分支持,一般仅针对安全等相关的issue或者bug
1.10.x 所有bug的对应都会提供支持

没有特别的问题的话,建议还是升到1.10上比较安心,非功能性因素相关的技术债务建议也不要积累的越来越多。

安装

安装可以采取源码编译/二进制方式/Subversion Edge/镜像方式等进行。

源码下载

如果有svn客户端的话,可以直接使用svn co下载源码:svn co https://svn.apache.org/repos/asf/subversion/trunk subversion

编译

编译则直接使用: ./configure ; make; make install 即可。详细的模块的设定可参看如下说明:https://svn.apache.org/repos/asf/subversion/trunk/INSTALL

二进制方式

几乎大部分操作系统都提供了package进行快速安装,包括:AIX | Centos Linux | Debian Linux | Fedora Linux | FreeBSD | HP-UX | NetBSD | OpenBSD | openSUSE | Mac OS X | Red Hat Linux | Solaris | SUSE Linux | Ubuntu Linux | Windows等操作系统。
比如在centos上,最简单的方式就是直接使用yum进行安装:yum install subversion,而如果需要dav模块,则直接使用yum install mod_dav_svn即可。
详细可参看:http://subversion.apache.org/packages.html

Subversion Edge

另外还可以直接使用Collabnet公司所提供的,edge还提供了容易操作的UI界面,可以参看以前版本的Subversion Edge相关的安装/设定说明:https://blog.****.net/liumiaocn/article/details/52108075

总结

这篇文章对svn进行了简单的介绍,在接下来这个系列的文章中,将会使用容器方式进行安装和设定,而使用如上的安装方式的,相关的设定则需要寻找对应目录进行设定和修改。