SVN快速上手 SVN的简介 SVN的配置和使用 冲突问题的介绍与解决

SVN

一、SVN简介

  1. 全称为Subversion,是代码版本管理工具
  2. 可以记住每次的修改
  3. 查看所有修改的记录
  4. 恢复任何历史版本
  5. 恢复已经删除的文件

二、SVN优势

  1. 使用简单,上手快
  2. 目录级权限控制,安全
  3. 可以对子目录进行操作(Git只能对整个仓库操作)

三、几个基本概念

  1. checkout(检出):将服务器的内容下载到本地,此命令只需要首次和服务器交互时使用一次
  2. update(更新):将服务器中新的内容同步到本地
  3. commit(提交):本地中的内容修改之后,将其提交到服务器
  4. Repository(版本库):服务器中源代码存放的位置,还存放了每次修改的历史

四、SVN下载和安装

  1. 官网下载SVN客户端安装包

在这里插入图片描述

  1. 官网下载汉化包

在这里插入图片描述

  1. 官网下载SVN服务器安装包

在这里插入图片描述

  1. 对上述三个安装包进行安装

注意:安装SVN客户端时,进行到此步时需要将对应内容勾选(可以使编译器集成SVN)

在这里插入图片描述

  1. 任意位置使用鼠标右键,出现以下内容表示安装成功
    在这里插入图片描述

五、SVN的配置与使用

  1. 进入VisualSVN服务器,界面中点击如下进行配置

在这里插入图片描述

  1. Server name的值可以设置为:

(1) 127.0.0.1 (只能本地自己访问)

(2) 电脑用户名 (只能本地自己访问)

(3) 当前IP地址 (能够ping通此IP的用户均可访问)

在这里插入图片描述

  1. 新建账号、密码

在这里插入图片描述

  1. 新建分组

在这里插入图片描述

  1. 新建版本库

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 向服务器的版本库中导入项目(import)

(1) 拷贝服务器仓库的地址

在这里插入图片描述
在这里插入图片描述

(2) 在磁盘中选择需要上传到服务器的项目

在这里插入图片描述

(3) 将第一步复制的地址粘贴到对应位置

在这里插入图片描述

(4) 选择永久接受

在这里插入图片描述

(5) 输入上述创建的用户的账号、密码,表明这是zhangsan用户向服务器导入项目

在这里插入图片描述

(6) 导入完成

在这里插入图片描述

(7) 在SVN服务器中刷新后查看导入的项目

在这里插入图片描述

  1. 第一次将服务器中的项目同步到本地(checkout)

(1) 在服务器中复制要同步的项目的地址

在这里插入图片描述

(2) 在磁盘中创建一个目录用来存放从服务器同步的项目,在此目录空白处右键

在这里插入图片描述

(3) 输入远程地址,并设置项目的输出目录

在这里插入图片描述

(4) 检出完成,在磁盘中有了服务器中对应的项目

在这里插入图片描述

  1. 将本地修改后的内容提交到服务器(commit)

(1) 在本地新建hello.txt文件,两次右键此文件

在这里插入图片描述

(2) 选择要提交的文件

在这里插入图片描述

(3) 提交成功,在服务器中成功同步本地中新增的内容
在这里插入图片描述

  1. 将服务器中新增的内容同步到本地(update)

(1) 本地磁盘中空白处右键
在这里插入图片描述

(2) 更新成功

在这里插入图片描述

六、SVN图标的说明

  1. 常规图标

在这里插入图片描述

当本地文件与服务器文件完全一致时显示此图标

  1. 冲突图标

在这里插入图片描述

当本地提交的文件与服务器端数据有冲突时,显示此图标

  1. 删除图标

在这里插入图片描述

当服务器端数据已删除,显示此图标

  1. 增加图标

在这里插入图片描述

当本地新增的文件已add至提交队列,显示此图标

  1. 无版本控制图标
    在这里插入图片描述

当本地新增的文件没有添加到上传队列,显示此图标

  1. 修改图标
    在这里插入图片描述

当本地文件有修改但未提交,显示此图标

  1. 只读图标

在这里插入图片描述

当本地文件以只读形式存在,显示此图标

  1. 锁定图标

在这里插入图片描述

当服务器端数据已锁定,显示此图标

  1. 忽略图标

在这里插入图片描述

当本地文件已忽略,不需要提交上传,显示此图标

七、冲突问题的介绍

  1. 冲突问题产生原因

假设A、B两个用户都在版本号为100的时候,更新了hello.txt这个文件,A用户在修改完成之 后提交hello.txt到服务器,提交成功,这个时候hello.txt文件的版本号已经变成101 了;同时B 用户在版本号为100的hello.txt文件上作修改,修改完成之后提交到服务器时,由于不是在当 前最新的101版本上作的修改,所以导致提交失败;此时用户B去更新文件,如果B用户和A 用户修改了文件的同一行代码,就会出现冲突

  1. 冲突文件存在形式

冲突文件hello.txt会衍生出如下四个文件:

(1) 上次的版本 hello.txt.r100
(2) 别人已提交更新后的版本 hello.txt.r101
(3) 自己更新后的版本 hello.txt.mine
(4) 冲突文件自身 hello.txt

解决冲突后,只会剩下hello.txt解决冲突后的文件

  1. 模拟冲突问题的场景

(1) 在A、B用户的本地磁盘均执行update命令,将内容更新至最新

(2) hello.txt文件的原始内容如下

在这里插入图片描述

(3) A用户对hello.txt修改,并commit至版本库
在这里插入图片描述

(4) B用户对hello.txt修改,并commit至版本库
在这里插入图片描述

(5) B用户commit至服务器时出现如下错误

在这里插入图片描述

(6) B用户此时应该执行update命令更新版本,获取冲突文件的四个衍生文件并解决冲突

八、冲突问题的解决

  1. B用户在磁盘中的项目目录下执行update命令

在这里插入图片描述

  1. B用户的项目目录下出现如下文件
    在这里插入图片描述

  2. 在冲突文件右键

在这里插入图片描述

  1. 弹出编辑冲突的窗口

在这里插入图片描述

  1. 如果要使用服务器版本,在Theirs窗口右键选择Use this text block;如果要使用本地版本,在 Mine窗口右键选择Use this text block;最终选择的都会保存在合并窗口

在这里插入图片描述

  1. 修改完成后,进行如下图所示的操作解决冲突

在这里插入图片描述

  1. 冲突解决后,只剩下解决冲突后的文件,衍生出的文件自动消失

  2. B用户再次执行commit操作,可提交至服务器

在这里插入图片描述

注意:频繁的commit、update可降低冲突发生的概率

猜你喜欢

转载自blog.csdn.net/weixin_49343190/article/details/112465529
今日推荐