一、svn简介
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。
二、SVN运行方式
借助http服务
使用svn+apache
使用CSVN
三、优缺点
所有的文档都显示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/