一、svn简介

SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。

二、SVN运行方式

借助http服务

使用svn+apache

使用CSVN

快速部署svn_svn 版本 代码上线

三、优缺点

所有的文档都显示SVN可以取代CVS,同时SVN的问题和缺点都被隐藏了。不幸的是,我们并不认为SVN是CVS的替代品,尽管很多缺陷都被修改了。更有甚者,它甚至让人重回CVS。CVS和SVN的比较类似于比较C++和Java。很明显CVS和SVN都远比SourceSafe强大的多,如同C++和Java比Basic强大的多。CVS代表了几乎代码控制系统的所有功能项,尽管有时他的实现并不很方便。SVN修正并添加了一些CVS并不拥的有功能。例如,创建标志和分支dubious,你在编辑文件时其他人不会有任何通知。SVN并不是CVS的替代品,只是个不同的系统,类似于CVS。它有些特有的功能,足以作为采用它的理由。这些功能使他更适合于开发环境,例如对PowerBuilder。下面你可以找到两者的相对优势、劣势。

四、svn的服务端搭建实战

1、查看系统版本

[1 root@mouse ~]# cat /etc/redhat-release 
CentOS release 6.6 (Final)
[2 root@mouse ~]# uname -r
2.6.32-504.el6.x86_64
[3 root@mouse ~]# uname -m
x86_64

2、准备软件包

Centos6.6如果安装了Development Tools包组,就已经安装了subversion1.6的软件包

[4 root@mouse ~]# rpm -qa|grep subversion
subversion-1.6.11-10.el6_5.x86_64

如果没有,可以通过yum安装,或者源码安装

yum install subversion -y

3、创建svn数据根目录

mkdir -p /server/svndata

4、创建并初始化项目数据仓库

[5 root@mouse ~]# mkdir /server/svndata/{sadoc,final_arch,svnpass} -p

#其中sadoc和final_arch是svn仓库,相当于多个项目;svnpass用于单独管理passwd和authz密码授权

创建初始化svn仓库数据

[6 root@mouse ~]# svnadmin create /server/svndata/final_arch/
[7 root@mouse ~]# svnadmin create /server/svndata/sadoc

查看目录结构 

[8 root@mouse ~]#tree -L 1 /server/svndata/final_arch/ 
/server/svndata/final_arch/
|-- README.txt
|-- conf  #配置文件
|-- db  #数据库文件
|-- format  #格式相关
|-- hooks  #钩子脚本,用于控制svn相关行为,比如权限,动作等
`-- locks  #数据库的锁

5、配置密码文件

将svn repo中conf的authz和passwd文件cp一份到/server/svndata/svnpass中:

[9 root@mouse ~]# mv /server/svndata/final_arch/conf/{authz,passwd} /server/svndata/svnpass/

6、修改svn repo的配置文件

[11 root@mouse ~]# grep -vE "^#|^$" /server/svndata/sadoc/conf/svnserve.conf 
[general]
anon-access = none #控制匿名用户访问权限
auth-access = write #授权用户可读写
password-db = /server/svndata/svnpass/passwd #将密码文件指定到我们自己的密码文件
authz-db = /server/svndata/svnpass/authz #将授权文件指定到我们自己的授权文件
realm = sadoc #验证,填写项目名
[sasl] #用于配置使用sasl验证时的参数选项

7、编辑密码文件和授权文件:

[19 root@mouse svnpass]# pwd
/server/svndata/svnpass
[20 root@mouse svnpass]# cat passwd 
[sadoc:/]
maker = rw
[final_arch:/]
maker = rw

8、创建日志目录

mkdir /app/logs/svn/ –p

9、启动svn服务并检测服务启动

[24 root@mouse svnpass]# svnserve -d -r /server/svndata/ --log-file /app/logs/svn/access.log --pid-file /var/run/svnserve.pid

-r:指定svn根目录,如果是单项目可以直接指定到repo目录;如果是多项目,就指定到repo的上级目录

--log-file:指定日志文件

--pid-file:制定pid文件,方便管理

-d:守护进程方式执行

检测服务启动

[25 root@mouse svnpass]# netstat -tupln|grep svnserve
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      3327/svnserve

四、客户端的使用,window使用较为简单,此处不再演示,详情请看二麻运维http://www.trnux.com/linux/384/