SVN版本控制系统(SubVersion)

一、概述

为什么要使用SVN系统控制软件?

在遇到多版本时如何解决?

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的工作流程

1、Checkout(检出)

2、Update(更新)

3、Commit(提交)

服务器端安装(visualSVN)

1、双击安装

2、下一步

选择带有可视化界面的,第二种情况只有Dos界面

安装模式

3、仓库与端口设置

location字符不要出现空格

配置仓库与端口

SVN服务器项目配置

1、创建一个项目

​ 1. 首先在SVN服务端创建一个公有目录WebApp作为项目目录

  1. 在WebApp目录下创建Shop文件夹,作为Shop(版本仓库)

  2. SVN文件夹下创建WebApp文件夹

  3. WebApp文件夹下创建Shop文件夹

  4. 创建版本仓库,Dos环境基本语法

    svnadmin create Shop 文件夹路径(Shop路径)

  1. 创建成功之后Shop文件目录下的文件结构

    shop文件目录结构

2、进行服务端监管

Apache -> http://loaclhost或(IP地址)访问到hedocs目录下的相关文件(监管)

SVN -> svn://localhost或(IP地址)访问到相关数据仓库(如Shop仓库)

基本语法:

svnserve -d(后台运行) -r(监管目录) 版本仓库路径

如下图所示:

通过以上指令,我们的svn://loaclhost或者IP地址就可以直接指向Shop版本仓库。

3、权限控制

默认情况下,SVN服务器是不允许匿名用户,上传文件到服务端的,所以必须更改项目的相关配置文件。

打开Shop/conf/svnserve.conf文件,修改第19行aanon-access字段的值为write

三、SVN客户端安装

1、获取安装包

客户端有两个版本:32位和64位

2、确认操作系统位数

右击电脑->属性就可以看到如下界面,确定自己的电脑是32位还是64位;

3、安装

  1. 双击安装包(TortoiseSVN)
  2. 同意许可,点击下一步

  1. 选择安装路径

  1. 下一步,install,系统将会自动安装SVN软件,单机Finish即可
注:安装完成之后,一定要重启计算机,否则SVN图标无法正常出现
  1. 安装成功之后,鼠标右键就会出现如下两个图标,代表我们已经成功安装

  1. 如果需要汉化包,安装完成之后只需要双击汉化包即可。

安装完成之后,在Setting之中选择设置语言即可:

  1. 使用客户端软件连接配置服务器

首先在你的项目目录鼠标右键 —> TortoiseSVN —> 版本库浏览器 —> svn://localhost(输入svn服务器地址)

svn://SVN服务器地址 —> Shop项目(仓库)

打开隐藏功能,显示隐藏文件,就可以看到.svn文件,此时就已经与服务端建立了联系

四、SVN使用详解

Checkout检出操作

  1. 连接到SVN服务器端
  2. 更新服务端数据到本地

注意:Checkout只在第一次链接时操作一次,以后如果进行更新操作使用Update(更新指令)

Commit提交操作

  1. 提交本地数据到服务端

在Dos窗口使用svn -d -r 文件路径,鼠标右击出现上图,点击提交或者更新即可。

出现下图,说明项目上传完毕。

项目成员如何加入项目

  1. 检出

先创建自己的文件夹 —> 在项目目录里边 —> 鼠标右键 —> Tortoise —> 输入URL —> 右键项目 —> 检出即可

  1. 提交

当该项目成员需要上交文件时,执行Commit操作即可。

Update更新操作

用于在别的项目组成员提交了文件或者数据之后更新到本地项目

五、SVN图标详解

图标及含义

img

  1. 常规

当客户端文件与服务器端文件完全同步时,系统显示以上图标。

  1. 冲突image-20201223151339980

当客户端提交的文件与服务器端数据有冲突时,系统会显示以上图标。

  1. 已删除image-20201223151406918

当服务端数据已删除,那么客户端该文件将显示以上图标。

  1. 增加image-20201223151417555

当我们编写文件已添加到提交队列,那么系统将自动显示该图标。

  1. 无版本控制image-20201223151426461

当我们编写的文件没有添加到队列,那么系统将自动显示以上图标。

  1. 修改image-20201223151434104

当客户端文件有修改但未提交,此时将自动显示以上图标。

  1. 只读image-20201223151446394

当客户端文件以只读形式存在时,将自动显示以上图标。

  1. 锁定image-20201223151457680

当服务端数据已锁定,那么客户端文件将自动显示锁定图标。

  1. 忽略image-20201223151505792

客户端文件易忽略,不需要进行提交上传,那么将自动显示该图标。

忽略功能

当你不需要将一些文件上传时,右击文件选择Tortoise中的忽略菜单即可忽略。

六、SVN使用详解三

版本回退

什么是版本回退

有些时候,软件的运行可能是开发者或使用者不满意,这时我们需要把当前版本退回到以前的某个版本。

传统的版本功能每一个版本都需要占用一定的内存空间。

v1.0 v2.0 v3.0 总计
100M 150M 200M 450M

但是SVN的存储机制只需要在原来的版本基础上添加即可
| v1.0 | v2.0 | v3.0 | 总计 |
| —— | —— | —— | —— |
| 100M | +50M | +50M | 200M |

如何回到某个版本?

在项目文件鼠标右击,选择Tortoise然后选择更新至二级菜单即可进行下一步如何更新的操作。

  • 通过日志的形式
  • 通过版本号的形式

七、版本冲突

  1. 通过安排不同开发时间解决
  2. 通过分配不同项目开发模块
  3. 通过SVN解决版本冲突问题

八、配置多仓库与权限控制

1、配置多仓库

在实际项目开发中,我么可能会同时开发多个项目,那么我们如何进行多项目监管呢?

通过svnserver进项仓库监管,但是监管指令只能监管某一个文件夹,不能同时监管多个仓库。但是可以通过监管总目录达到监管所有仓库的目的。svnserver -d -r 文件路径

Shop项目:svn://loaclhost/Shop

Wechat项目:svn://localhost/Wechat

2、权限控制

如果要使用权限控制功能,必须先开启权限功能。

在每一个仓库中都有一个conf文件夹,里面有三个文件:

authz文件:授权文件

告诉哪些用户具有哪些权限

passwd文件:认证文件

标识当前svn系统中某个仓库具有哪些用户以及 相应的密码

默认情况下,以上两个文件都是禁用的,如需要使用,首先要开启以上两个文件。

在svnserver.conf 配置文件中:

  1. 注释匿名用户的可读写权限# anon-access = write

  2. 开启认证文件与授权选线27行与36行

    27行password-db = passwd

    36行auth-db = authz