SVN版本控制系统(SubVersion)
一、概述
为什么要使用SVN系统控制软件?
![](https://tva4.sinaimg.cn/large/0072YHp3ly1glrrnrpd0yj30q90dhdil.jpg)
在遇到多版本时如何解决?
SCM:软件配置管理
所谓的软件配置管理实际就是对软件源代码进行控制与管理
1. CVS:元老级产品
2. VSS:入门级产品
3. ClearCase:IBM公司提供技术支持
4. SVN:主流产品
什么是SVN
SVN是近年来鹊起的版本管理工具,是CVS的接班人。目前,绝大多数软件公司都适用SVN作为代码版本管理软件。
特点:
- 操作简单,入门容易 - 支持跨平台操作 - 支持版本回退功能(时间机器)
获取SVN软件
属于C/S结构软件(客户端与服务端)
- 服务端软件网址 www.visualsvn.com
- 客户端软件网址 www.tortoisesvn.com [下载网址](http://tortoisesvn.net/downloads)
二、SVN服务端安装
SVN的工作流程
![](https://tva2.sinaimg.cn/large/0072YHp3ly1glrrpotbcxj30nv0ddt9e.jpg)
1、Checkout(检出)
2、Update(更新)
3、Commit(提交)
服务器端安装(visualSVN)
1、双击安装
2、下一步
选择带有可视化界面的,第二种情况只有Dos界面
![安装模式](https://tva4.sinaimg.cn/large/0072YHp3ly1glrrrr4qclj30jd0ff47t.jpg)
3、仓库与端口设置
location
字符不要出现空格
![配置仓库与端口](https://tva4.sinaimg.cn/large/0072YHp3ly1glrrshikhwj30jd0f7te3.jpg)
SVN服务器项目配置
1、创建一个项目
1. 首先在SVN服务端创建一个公有目录WebApp作为项目目录
-
在WebApp目录下创建Shop文件夹,作为Shop(版本仓库)
-
在
SVN
文件夹下创建WebApp
文件夹 -
在
WebApp
文件夹下创建Shop
文件夹 -
创建版本仓库,Dos环境基本语法
svnadmin create Shop 文件夹路径(Shop路径)
-
创建成功之后Shop文件目录下的文件结构
2、进行服务端监管
Apache -> http://loaclhost或(IP地址)访问到hedocs目录下的相关文件(监管)
SVN -> svn://localhost或(IP地址)访问到相关数据仓库(如Shop仓库)
基本语法:
svnserve -d(后台运行) -r(监管目录) 版本仓库路径
如下图所示:
![](https://tvax1.sinaimg.cn/large/0072YHp3ly1glrrt00mlij30r3049dgk.jpg)
通过以上指令,我们的svn://loaclhost或者IP地址就可以直接指向Shop版本仓库。
3、权限控制
默认情况下,SVN服务器是不允许匿名用户,上传文件到服务端的,所以必须更改项目的相关配置文件。
打开Shop/conf/svnserve.conf
文件,修改第19行aanon-access
字段的值为write
。
三、SVN客户端安装
1、获取安装包
客户端有两个版本:32位和64位
2、确认操作系统位数
右击电脑->属性就可以看到如下界面,确定自己的电脑是32位还是64位;
3、安装
- 双击安装包(TortoiseSVN)
- 同意许可,点击下一步
![](https://tva3.sinaimg.cn/large/0072YHp3ly1glrrt0tf7uj30k50ff491.jpg)
- 选择安装路径
![](https://tvax3.sinaimg.cn/large/0072YHp3ly1glrrsya5rvj30iz0ertf9.jpg)
- 下一步,install,系统将会自动安装SVN软件,单机Finish即可
注:安装万众城之后,一定要重启计算机,否则SVN图标无法正常出现
- 安装成功之后,鼠标右键就会出现如下两个图标,代表我们已经成功安装
![](https://tva3.sinaimg.cn/large/0072YHp3ly1glrrsydumuj30rz0bjgpr.jpg)
- 如果需要汉化包,安装完成之后只需要双击汉化包即可。
![](https://tvax1.sinaimg.cn/large/0072YHp3ly1glrrsyhky3j30pv09f78g.jpg)
安装完成之后,在Setting
之中选择设置语言即可:
![](https://tvax4.sinaimg.cn/large/0072YHp3ly1glrrsylb0gj30rh081n1r.jpg)
- 使用客户端软件连接配置服务器
首先在你的项目目录鼠标右键 --> TortoiseSVN --> 版本库浏览器 --> svn://localhost(输入svn服务器地址)
![](https://tvax3.sinaimg.cn/large/0072YHp3ly1glrrsyqfgtj30it06laax.jpg)
svn://SVN服务器地址 --> Shop项目(仓库)
![](https://tvax3.sinaimg.cn/large/0072YHp3ly1glrrsyu9fxj30s70b979l.jpg)
打开隐藏功能,显示隐藏文件,就可以看到.svn
文件,此时就已经与服务端建立了联系
四、SVN使用详解
Checkout检出操作
- 连接到SVN服务器端
- 更新服务端数据到本地
注意:Checkout只在第一次链接时操作一次,以后如果进行更新操作使用Update(更新指令)
Commit提交操作
- 提交本地数据到服务端
![](https://tva2.sinaimg.cn/large/0072YHp3ly1glrrsz0ccbj30b70fjn02.jpg)
在Dos窗口使用svn -d -r 文件路径
,鼠标右击出现上图,点击提交或者更新即可。
![](https://tva1.sinaimg.cn/large/0072YHp3ly1glrrsz3jsmj30nv0k9gtl.jpg)
出现下图,说明项目上传完毕。
![](https://tva1.sinaimg.cn/large/0072YHp3ly1glrrsza0w5j30pt0bl79s.jpg)
项目成员如何加入项目
- 检出
先创建自己的文件夹 --> 在项目目录里边 --> 鼠标右键 --> Tortoise --> 输入URL --> 右键项目 --> 检出即可
![](https://tva3.sinaimg.cn/large/0072YHp3ly1glrrszeb91j30sf0b977s.jpg)
- 提交
当该项目成员需要上交文件时,执行Commit操作即可。
![](https://tvax4.sinaimg.cn/large/0072YHp3ly1glrrsziqi1j30xz0krjzv.jpg)
Update更新操作
用于在别的项目组成员提交了文件或者数据之后更新到本地项目
五、SVN图标详解
图标及含义
- 常规
当客户端文件与服务器端文件完全同步时,系统显示以上图标。
- 冲突
当客户端提交的文件与服务器端数据有冲突时,系统会显示以上图标。
- 已删除
当服务端数据已删除,那么客户端该文件将显示以上图标。
- 增加
当我们编写文件已添加到提交队列,那么系统将自动显示该图标。
- 无版本控制
当我们编写的文件没有添加到队列,那么系统将自动显示以上图标。
- 修改
当客户端文件有修改但未提交,此时将自动显示以上图标。
- 只读
当客户端文件以只读形式存在时,将自动显示以上图标。
- 锁定
当服务端数据已锁定,那么客户端文件将自动显示锁定图标。
- 忽略
客户端文件易忽略,不需要进行提交上传,那么将自动显示该图标。
忽略功能
当你不需要将一些文件上传时,右击文件选择Tortoise中的忽略菜单即可忽略。
六、SVN使用详解三
版本回退
什么是版本回退
有些时候,软件的运行可能是开发者或使用者不满意,这时我们需要把当前版本退回到以前的某个版本。
传统的版本功能每一个版本都需要占用一定的内存空间。
v1.0 v2.0 v3.0 总计 100M 150M 200M 450M 但是SVN的存储机制只需要在原来的版本基础上添加即可
v1.0 v2.0 v3.0 总计 100M +50M +50M 200M
如何回到某个版本?
在项目文件鼠标右击
,选择Tortoise
然后选择更新至
二级菜单即可进行下一步如何更新的操作。
- 通过日志的形式
- 通过版本号的形式
七、版本冲突
- 通过安排不同开发时间解决
- 通过分配不同项目开发模块
- 通过SVN解决版本冲突问题
八、配置多仓库与权限控制
1、配置多仓库
在实际项目开发中,我么可能会同时开发多个项目,那么我们如何进行多项目监管呢?
通过svnserver进项仓库监管,但是监管指令只能监管某一个文件夹,不能同时监管多个仓库。但是可以通过监管总目录达到监管所有仓库的目的。svnserver -d -r 文件路径
Shop项目:svn://loaclhost/Shop
Wechat项目:svn://localhost/Wechat
2、权限控制
如果要使用权限控制功能,必须先开启权限功能。
在每一个仓库中都有一个conf文件夹,里面有三个文件:
authz文件:授权文件
告诉哪些用户具有哪些权限
passwd文件:认证文件
标识当前svn系统中某个仓库具有哪些用户以及 相应的密码
默认情况下,以上两个文件都是禁用的,如需要使用,首先要开启以上两个文件。
在svnserver.conf 配置文件中:
注释匿名用户的可读写权限
# anon-access = write
开启认证文件与授权选线27行与36行
27行
password-db = passwd
36行
auth-db = authz