SVN的使用
1.SVN简介
1.1 简介
- SVN全称Subversion,是一个开放源代码的版本控制系统
- 用于多个人共同开发同一个项目,共用资源的目的
- 由于大部分时间只需要使用服务端,所以主要记录服务端的使用方法
1.2 主要作用
- 目录版本控制
- 真实的版本历史
- 自动提交
1.3 基本概念
- Repository(源代码库):源代码统一存放的地方
- Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份
- Commit(提交):当你已经Checkout了一份源代码,Update后就可以和Repository上的源代码同步
1.4 冲突
- 如果两个程序员同时修改了同一个文件,SVN可以合并这两个程序员的改动,实际上SVN管理源代码是以行为单位的,只要不是修改了同一行程序,SVN都会自动合并两种修改,如果是同一行,会提示冲突
1.5 生命周期
- 创建版本库
- 检出
- 更新
- 执行变更
- 复查变化
- 修复错误
- 解决冲突
- 提交更改
2.SVN下载安装
2.1 下载
3.SVN的配置
3.1 服务端
- 设置IP和端口
- Server name的值可以设为:
- 127.0.0.1(只能本地自己访问)
- 电脑用户名(只能本地自己访问)
- 当前IP(能够ping通IP的用户均可访问)
- Server name的值可以设为:
- 新建用户,设置账号密码
- 新建分组,为分组添加用户,用于管理权限
4.SVN的使用
4.1 服务端
- 新建版本库
- 新建版本库时可以设置仓库的访问权限
- 迁入项目到SVN
- 拷贝远程仓库的地址
- 选择任意项目,右键选择TortoiseSVN,选择import
- 填入仓库地址和备注信息
- 输入账号密码
- 导入成功
4.2 客户端
- 检索项目(check out)
- 拷贝项目的远程地址
- 右键选择SVN Checkout
- 输入项目的远程地址,设置项目的存放位置,设置想要检索的版本
- 拉取成功
- 提交代码(commit)
- 新建文件,右键选择TortoiseSVN,选择Add,将文件添加到版本库列表
- 再次点击文件,右键,选择SVN Commit
- 更新代码(update)
- 如果当前资源不是最新版本,则可在项目空白处右键,选择SVN Update
4.3 版本冲突问题
- A、B两个用户都在版本号为100的时候。更新了同一个文件,A修改完后提交到服务器,这个文件的版本号变成了101,此时B在100版本的文件上做修改,完成后提交到服务器时就会导致提交失败,如果A、B修改了文件的同一行代码,就会出现冲突
- 发生冲突时,SVN会在当前工作目录中保存所有的目标文件版本
4.4 版本冲突解决
- 用户将文件提交至服务器时,提示版本过期,首先应从版本库中更新,然后去解决冲突,之后使用 svn resolved 来告诉SVN冲突解决
- 解决冲突的三种选择
- 放弃自己的更新,使用svn revert(回滚),然后提交,这种方式不需要使用svn resolved
- 放弃自己的更新,使用别人的更新,使用最新获取的版本覆盖目标文件,执行resolved filename并提交
- 手动解决,冲突发生时,通过和其他用户沟通之后,手动更新目标文件,然后执行resolved filename并提交
4.5 如何降低冲突解决的复杂度
- 当文档编辑完成后,尽快提交,频繁的提交/更新,可以降低冲突发生的频率和解决冲突的复杂度
- 在提交时,写上明确的message,方便以后查找用户更新的原因
- 养成良好使用习惯,使用SVN时每次提交完,就更新。明天早上打开后,首先从版本库获取最新版本。每天下班前必须将已编辑过的文档都提交到版本库
5.编辑器集成SVN
- 具体步骤与配置码云和GitHub类似
- 如果安装目录找不到svn.exe,是因为安装小乌龟的时候,没有勾选对应选项