一;SVN的介绍
subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件。Subversion支持linux和windows,但较多安装在linux下。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。SVN是基于关系数据库的(BerkleyDB)或一系列二进制文件的(FS_FS)。一方面这解决了许多问题 (例如,并行读写共享文件)以及添加了许多新功能(例如运行时的事务特性。)。然而另一方面,数据存储由此变得不透明
SVN自由,开源的版本控制系统,核心数据仓库-Repository 工作空间-Workspace
SVN=版本控制+备份服务器
cvs是什么? cvs是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本
BDB伯克利DB(Berkeley DB),版本库可以使用的一种经过充分测试的后台数据库实现,不能再通过网络共享的文件系统上使用,伯克利DB是Subversion1.2版本以前的缺省版本库格式
FSFS一个专用于Subversion版本库的文件系统后端,可以使用网络文件系统(例如:NFS或SMBFS)。是1.2版本及以后的缺省版本库格式。
svn存储版本数据因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。
- ;SVN的工作原理
svn的基本工作原理: 在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序。有源代码库管理员统一管理这些源程序。每个用户在使用源代码库之前,首先要把源代码库里德项目文件下载到本地,然后开发人员可以在本地修改,最后用svn命令进行提交,由源代码库统一管理修改。
svn服务器有两种运行方式:独立服务器和借助于apache。
1.独立服务器访问
访问地址如:svn://svn.test.com/test
2.借助Apache等http服务
访问地址如:http://svn.test.com/test
- ;SYN的优点
- 备份工作档案,相当于一台服务
- 进行版本控制,记录历史。每次修改更新的版本都会存在日志中
3、合作开发,共享搭档的数据
4、节约备份的空间
5、分为客户端和服务器端,从程序开发人员和项目经理两个角度可以更好的体会SVN,达到各自的目的。不同的开发人员共享资源;项目经理可以管理项目,时刻可以了解项目进行的动态。
四、案例:服务搭建及配置
案例环境:
系统类型 | IP地址 | 主机名 | 所需软件 |
Centos7.4 | 192.168.100.101 | svnserver | 系统自带subversion |
Windows |
|
| tortoise |
案例步骤:
- a 服务端安装svn
- b 创建项目
- c svn的相关配置
- d 编写防火墙规则
- e 开启服务
搭建vsn服务及修改配置文件
[root@svnserver ~]# yum -y install subversion 下载svn服务
[root@svnserver ~]# mkdir -p /usr/local/svndata/cangku 创建svn仓库目录
[root@svnserver ~]# svnadmin create /usr/local/svndata/cangku/ 创建项目
[root@svnserver ~]# vi /usr/local/svndata/cangku/conf/svnserve.conf 修改主配置文件
anon-access = none|read 非授权的用户无法访问
auth-access = write 授权用户有写的权限
password-db = passwd 指明密码的路径
authz-db = authz 访问控制的文件
realm = /usr/local/svndata/cangku 指定共享文件库
[root@svnserver ~]# vi /usr/local/svndata/cangku/conf/passwd 创建用户和密码
[users]
# harry = harryssecret
# sally = sallyssecret
linuxfan1 = 123123
linuxfan2 = 123456
[root@svnserver ~]# vi /usr/local/svndata/cangku/conf/authz
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
[/]
linuxfan1=rw
linuxfan2=r
[root@svnserver ~]# svnserve -d -r /usr/local/svndata/cangku
[root@svnserver ~]# netstat -uptln |grep svn
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 7038/svnserve
[root@svnserver ~]# iptables -I INPUT -p tcp --dport 3690 -j ACCEPT 写防火墙规则3690对外打开
[root@svnserver ~]# iptables-save
root@svnserver ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3690
[root@svnserver ~]# yum -y install psmisc 下载kill命令
[root@svnserver ~]# killall svnserve 关闭svn服务
[root@svnserver ~]# netstat -uptln |grep svn
[root@svnserver ~]# svnserve -d -r /usr/local/svndata/cangku
[root@svnserver~]# vi /etc/init.d/svn
#!/bin/bash
# chkconfig: 35 24 65
case $1 in
start)
svnserve -d -r /usr/local/svndata/cangku &> /dev/null
echo "svn is running..."
;;
stop)
kill -9 $(netstat -tunlp | grep svnserve | awk '{print $7}' | awk -F '/' '{print $1}') &> /dev/null
echo "svn is stop..."
;;
restart)
$0 stop
$0 start
;;
*)
echo "使用方法:/etc/init.d/svn (start|stop|restart)"
esac
[root@svnserver~]# chmod +x /etc/init.d/svn
[root@svnserver~]# chkconfig --add svn
Windows客户端访问 检出目录提前在window上创建好svn目录