1. SVN简介
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
SVN的全称式Subversion,即版本控制系统。它是最流行的一个开放源代码的版本控制系统。作为一个开源的版本控制系统,Subversion管理随着时间改变的数据。这些数据放置在一个中央资料档案库中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可以用来管理任何类型的文件,其中包括程序源代码。
SVN采用客户端/服务端体系也就是我们常说的(C/S架构),项目的各种版本都存储在服务器上,程序开发人员首先将从服务器上获得一份项目的最新版本,并将其复制到本机,然后再此基础上,每个开发人员可以再自己的客户端进行独立的开发工作,并且可以随时将新代码提交给服务器。当然也可以通过更新操作获取服务器上的最新代码,从而保持与其他开发者所使用版本的一致性。
SVN的客户端有两类,一类是基于Web的WebSVN等,另一类是以Tortoise SVN为代表的客户端软件。前者需要Web服务器的支持,后者需要在本地安装客户端,两种都有免费的开源软件供使用。SVN存储版本数据也有两种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的储存系统)。因为BDB方式在服务器中断时,可能锁住数据,所以还是FSFS方式更安全一点。
2. SVN工作机制
SVN系统具体时如何实现对项目软件的版本控制,一方面通过实现历史操作记录查阅。在任意一台服务器中都可以添加一个SVN版本,而相应的版本库中存放大量的程序和文档,而这些项目资源主要通过配置管理员依据不同的配置管理计划对不同项目的组员分配与之相符合的访问权限,进而实现对资源的统一管理;只有SVN标本过版本库中的资源,项目组成员可以对版本资源库中的资源进行访问。
一次简单的访问过程包括:相关项目组员首先在客户操作端建立一个从版本库检索出来的项目文件,而后就可以对拷贝的档案进行修改,最后SVN提交命令将其修改后的项目文件提交到终端服务器,终端服务器最终会对修改后的项目文件做最后的综合更新记录。
修改过的文件在修改未被提交到服务器前,SVN服务器只会对已经提交到网络端服务器的项目文档进行更新审核,并与其他人的合并,在此之前修改过的文档是保密的,提交之后SVN络端服务器会将修改后与修改之前的数据进行比较,并在后台对修改内容就行标注显示,进而实现对历史操作记录的更新记载。最终实现项目组组员既能检索出旧版本,又能通过SVN实现新旧版本的对比,另一方面SVN通过进行组员间的协同开发实现对项目软件的版本控制。协同开发一般是指版本控制系统间接受并处理不同用户提交的各种不同性质版本的资源代码,同时允许各个用户之间在遵循相应规则范围内实现合作开发。如何处理好有矛盾的版本控制系统才是能够协同开发的关键,像是多个程序编码员同时对同一份资源代码进行修改、提交到SVN版本库,就有可能发生提交后的版本意见想法相冲等问题。
3. SVN优势
-
存储
SVN服务器既具有CVS所具有数据储存的优点,像是信息资源存储后会形成资源树结构,便于存储的同时,数据一般不会丢失,同时又拥有自己的特色。SVN是通过关系数据库及二进制的存储方式,同时解决了既往不能同时读写同一文件等问题,同时增添了自己特有的“零或一”原则。 -
速度
与人们初始的CVS相比,SVN在速度运行方面有很大提升。因为SVN服务器只支持少量的信息、资源传输,与其他系统相比,更支持的是离线模式,因此避免了网络拥挤现象的出现。 -
安全性
SVN是一种技术性更加安全的产品,实现了系统和控制两方面的结合。一方面可以将系统整体的安全功能有效地分布在分支系统中,进而保证分支系统能正常运行,从而使各分支系统能够互补,最终在系统整体性的安全性得以保障,通过均衡原则实现最终追求安全的目的。
4. 安装SVN
[root@localhost ~]# yum -y install subversion
创建目录并配置
[root@localhost ~]# mkdir -p /data/svn/repo
[root@localhost ~]# svnadmin create /data/svn/repo
用户密码passwd配置
[root@localhost conf]# vim passwd
[root@localhost conf]# pwd
/data/svn/repo/conf
修改passwd文件
在最后一行添加以下内容
[root@localhost conf]# tail -1 passwd
tom=123
tom用户名=密码123
都必须顶格写,否则报错
权限控制authz配置
在文件的最后两行添加下面内容
[root@localhost conf]# vim authz
[root@localhost conf]# tail -2 authz
[/] //表示根目录下的所有内容
tom = rw 给tom用户读写权限
服务svnserve.conf配置
向文件追加这六行内容
[root@localhost conf]# vim svnserve.conf
[root@localhost conf]# tail -6 svnserve.conf
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径
password-db=passwd
#访问控制文件
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm=/data/svn/repositories
启动svn服务
[root@localhost ~]# svnserve -d -r /data/svn/repo --listen-port=3690
开启端口
[root@localhost ~]# /sbin/iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
5. 测试结果
官网下载:https://tortoisesvn.net/downloads.html
一直点击下一步
将文件导出
输入你的地址 svn://ip地址:3690/
输入在配置文件里面写的用户名和密码
上传一个文本进行测试
导入成功