SVN版本控制软件的使用
一、SVN概述
1、为什么需要SVN版本控制软件?
- 协作开发
- 远程开发
- 版本回退
2、解决方案
- SCM:软件配置管理 对软件源代码进行控制和管理
- CVS:元老级产品
- VSS:入门级产品
- ClearCase:IBM公司提供技术支持
- SVN:主流产品
3、什么是SVN?
- SVN全称SubVersion
- SVN是近几年兴起的版本管理工具,是CVS的接班人
4、特点
- 操作简单,入门容易
- 支持跨平台操作(Windows,Linux,MacOS)
- 支持版本回退
5、获取SVN软件
属于C/S结构软件(客户端/服务器端)
二、SVN软件安装
1、对SVN服务器的操作
- checkout(检出)
- update(更新)
- commit(提交/上传)
2、服务器软件安装(VisualSVN)
-
配置
-
创建一个项目
-
首先在SVN服务端创建一个公有目录WebApp做为项目目录
-
在WebApp目录下创建Shop文件夹,做为Shop(版本仓库)
-
创建版本仓库,基本语法:svnadmin create Shop文件夹路径
![]()
-
-
进行服务端监管
SVN -->svn://localhost 或(IP地址)访问到相关数据仓库
语法:svnserve -d(后台运行) -r(监管目录) 版本仓库路径
通过以上指令,svn://localhost 或(IP地址)就可以直接指向Shop版本仓库。
-
权限控制
默认情况下,SVN服务器不允许匿名用户上传文件到服务器,所以必须更改相关项目下的配置文件
![]()
-
3、客户端软件安装
-
使用客户端软件连接SVN服务器
右键 -->Totortoisesvn --> 版本库浏览器 -->输入SVN服务器地址 -->checkout
如果出现.svn文件代表成功。
三、SVN使用详解
1、SVN三大指令
-
checkout检出操作
-
链接到SVN服务器端
-
更新服务端数据到本地
注:checkout只在第一次链接时操作一次,以后如果进行更新操作使 用update指令。
-
-
commit提交操作
-
提交本地数据到服务器端
![]()
以上由项目经理完成。
-
-
update更新操作
由项目经理对SVN服务端进行更新操作,检查下属成员提交的模块。
2、图标集与忽略功能
-
图标集
- 常规图标:当客户端文件与服务端文件完全同步时。
- 冲突图标:当客户端提交的文件与服务端数据有冲突。
- 删除图标:当服务端数据已删除,客户端文件会显示。
- 增加图标:当我们编写的文件已添加到提交队列。
- 无版本控制图标:当我们编写的文件没有添加到上传队列。
- 修改图标:当客户端文件有修改但未提交。
- 只读图标:当客户端文件以只读形式存在时。
- 锁定图标:当服务端数据已锁定,客户端文件将自动显示。
- 忽略图标:客户端文件已忽略,不需要进行提交上传。
-
忽略功能
有些文件不希望上传至SVN服务器,应该将该文件或该类型的文件添加到忽略列表。
-
忽略某个指定文件
![]()
-
忽略某一类型文件
![]()
-
3、版本回退
-
原理
SVN相对与传统存储方式,使用的是差异存储。
-
功能
![]()
![]()
![]()
通过日志,根据版本号进行回退。
4、版本冲突
-
什么是版本冲突?
在实际的开发中,如果两个人同时修改某个文件就会产生版本冲突问题。
-
实列
当提交时产生如下:
![]()
-
解决方案
-
合理分配项目开发时间
-
合理分配项目开发模块
-
通过SVN解决版本冲突问题
-
更新服务端数据到本地
![]()
-
删除除index.php以外的其它三个文件
-
修改整合index.php冲突文件
-
重新提交到服务器端
-
-
5、配置多仓库与权限控制
-
配置多仓库
在实际开发中,会同时开发多个项目,如何进行多项目监管?
通过监管项目的上级目录来监管所有仓库。
svnserve -d -r E:/SVN/WebApp
访问具体项目
svn://localhost/Shop
-
权限控制
要使用权限控制功能,要先开启权限控制
在每个仓库中都有一个conf文件夹,里有三个文件。
![]()
开启步骤:
-
注释掉匿名用户的可读可写权限
-
开启认证文件和授权文件
-
编写认证文件,定义相关用户名和密码
![]()
-
编写授权文件
![]()
-
测试
-
6、SVN服务的配置与管理
-
配置自启动服务
sc create SVNService binpath="D:\subversion\bin\svnserve.exe --service -r D:/svnroot" start = auto
sc create 服务名称 binpath=空格"svnserve.exe --service -r E:/SVN/WebApp" start=空格 auto
- 创建系统服务,服务名SVNService
- 在控制面板-管理工具-服务找到SVNserver
- 运行成功,svn监管服务开发成功
-
使用批处理文件来停止和开启管理器
- 启动服务 net start 服务名称
- 停止服务 net stop 服务名称
- 删除服务 sc delete 服务名称
- 封装成为.bat封装就可以减少很多工作量
7、模拟真实开发环境
-
钩子程序
与一些版本库事件触发的程序,例如新修订版本的创建,或末版本属性的修改。
默认,钩子的子目录(hooks/)中包含各种版本库的钩子模板。
post-commit.tmpl: 事物完成之后触发的钩子程序
默认情况用批处理或者Shell指令完成
-
通过批处理指令编写钩子程序
-
指定SVN服务端工作目录
设置服务端svn路径
SET SVN="E:\SVn\bin\svn.exe"
-
指定web服务器工作目录
SET DIR="E:\serve\apache\htdocs\Shop"
-
通过update指令实时更新数据到DIR目录中
SET update %DIR%
-
-
具体流程
- 复指post-commit.tmpl为post-commit.bat文件
- 填写相关批处理指令
- 在apache目录下创建shop项目并更新svn服务端数据1到本地
- 更新文件到svn服务器端,可在Shop目录实时获取到最新数据
- 可以通过虚拟主机直接访问到更新文件
8、SVN扩展程序
-
BAE云引擎
百度应用引擎。使开发者不需要维护任何服务器,只需要简单的上传应用程序,就可以为用户提供服务。














浙公网安备 33010602011771号