1️⃣ SVN 的基本认识

SVN 是 subversion 的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

2️⃣ 版本控制的好处

  1. 备份还原,版本回退
  2. 协同修改
  3. 权限控制

2️⃣ 版本控制是什么

SVN [ subversion ] 是一款实现 集中式 的版本控制工具 , 通常也称作版本控制器

2️⃣ SVN 的操作流程

image.png

2️⃣ SVN 状态展示

如果不显示的话在任务管理器里找到 win10系统的找到资源管理器 重启一下
image.png

1️⃣ SVN 服务端

安装好服务端以后桌面是没有快捷图标的,需要去安装文件里找( 安装地址下的 VisualSVN Server 里的 bin 文件 里的 VisualSVN Server.msc)
C:\Program Files\VisualSVN Server\bin --- VisualSVN Server.msc

  1. 1. 打开后是这个样子就是安装成功了

image.png

2️⃣ SVN 服务端的基本操作

3️⃣ 创建仓库以及配置访问权限

1 - 创建一个新的仓库
image.png
2 - 为仓库命名
image.png
3 - 创建一个什么类型的仓库( 一般情况会选择空仓库,svn对于分支的操作很不友好,这也是svn被时代抛弃的原因 )
image.png
4 - 设置仓库的访问权限

  1. 1. 在配置选项里选择 增加
  2. 2. 创建用户名并为用户设置访问密码
  3. 3. 创建好用户后为用户设置权限( permissions
  4. 1. No Access - 不能访问
  5. 2. Read Only - 只读
  6. 3. Read / Write - 可读写

image.png
5 - 创建好以后需要保存仓库地址,如果没有保存可以这样获取
image.png

3️⃣ 添加新用户以及配置权限

新添加的用户是没有任何权限的需要进行重新配置

  1. 1. 进入配置页面点击 add 添加用户
  2. 2. 选中需要配置选项的用户为其配置权限

image.png
image.png

3️⃣ 创建仓库备份到本地

  1. 备份时使用的名字以及备份的说明
  2. 是全部备份还是选择备份某一个项目
  3. 选择备份到本地的地址 ( 一般情况下不会选择 C 盘,因为 C 盘有时候需要权限 )
  4. 选择全部备份还是增量备份
    1. 全部备份就是统一覆盖一次
    2. 增量备份就是把修改过得和增加的备份
  5. 选择每天几点备份以及每周几天备份
  6. 选择备份保留时间,如果时间到了会逐步覆盖最早的备份
  7. 选择使用免费的还是VIP( 免费的申请一个就可以了 )

image.png


3️⃣ 访问仓库

复制仓库地址到浏览器地址栏就可以访问仓库了需要登录配置的用户名和密码

1️⃣ SVN 基本操作

2️⃣ 检出仓库到本地

1 - 右键菜单选择
image.png
2 - 选择仓库和需要检出的地址以及是否检出所有( 推荐检出所有 )下边的 HEAD 是选择检出的版本默认为最新版
image.png
3 - 登录账户密码进行检出
image.png

2️⃣ 提交保存

1 - 在需要的文件上右键,首次提交新增文件,再次提交会逐步更新版本号,后续根据版本号回退
2 - image.png

2️⃣ 版本回退

  1. 在需要回退版本的文件上右键
  2. image.png
  3. image.png
  4. image.png
  5. image.png
  6. 最后确定即可

2️⃣ 冲突问题

在写代码之前首先更新一下本地代码,如果有人在之前提交更新过,会首先在本地更新其他人提交更新好的代码,这样能避免冲突的几率
在自己提交更新代码之前,首先更新一下,如果有冲突会在提交之前显示出冲突的信息,更新完在次提交会避免麻烦
问题的发生 : 两人开发同一文件的同一位置要展示不同的内容会发生冲突问题

3️⃣ 手动处理

index1被A更新后提交 版本更新为index2 B再次提交index1 就会产生冲突报错信息为版本过期 后续SVN会将AB的冲突文件都下载到 B的本地文件库 本地文件库会更新三个文件 mine为B所更新的内容 r1为代码冲突部分 r2为A所更新的内容 B可根据这些消息来处理冲突的部分重新排列组合然后重新提交

image.png

3️⃣ 借助SVN工具解决

  1. 在冲突的文件上右键
  2. image.png
  3. image.png
  4. 选中冲突的部分右键选择在以下几种解决冲突的方式中选择一种合适的部分
  5. image.png
  6. 解决冲突后选择image.png本地文件夹会自动处理,删除不需要的文件
  7. 查看本地处理好的文件是否有公告部分的残留,处理好以后提交更新

3️⃣ 借助IDE工具解决

2️⃣ 忽略配置文件

image.png
image.png

2️⃣ SVN锁

  1. 需要加锁的文件右键 ( 不可随意加锁,遇到有人加锁最好别动 )
  2. image.png
  3. image.png
  4. image.png

2️⃣ 与上一个版本做对比

image.png

2️⃣ 检测版本历史修改的详细信息

image.png

2️⃣ 清理SVN任务队列

我们在使用svn时,有时候会遇到这个常见的报错:Previous operation has not finished; run ‘cleanup’ if it was interrupted;
按照这个提示,我们会去执行cleanup操作,但是令人崩溃的是,有时候cleanup也会报错,导致你的svn罢工了,此时你需要清空svn的内部队列。
具体操作过程如下:

  1. 1. sqlite3.exe放到和.svn的同级目录下。
  2. 2. 启动cmdcd到仓库目录,执行:sqlite3 .svn/wc.db "select * from work_queue"
  3. 3. 你会看到很多的队列。
  4. 4. 执行:sqlite3 .svn/wc.db "delete from work_queue"
  5. 5. 清空完毕。重新执行cleanupOK了!