Java第四十六天,Svn系列,走进Svn
Java第四十六天,Svn系列,走进Svn
一、什么是Svn
Subversion是一种集中式的版本控制器,它将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,但是它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节
二、Svn的基本功能
- checkout ===> 将服务器的数据下载到本地
- commit ===> 将本地的数据上传到服务器
- update ===> 将修改过的数据(以前从服务器下载的数据)更新至服务器
三、Svn的工作模式
1.复制-修改合并方案( 默认模式)
在这种模型里,每个客户读取项目配置库建立一个私有工作副本——版本库中文件和目录的本地映射。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误
2.锁定-修改-解锁方案
在这样的模型里,在一个时间段里配置库的一个文件只允许被一个人修改
四、Svn服务器与客户端的安装
svn服务器与客户端的下载地址:点我下载
五、使用Svn服务器创建本地仓库
1.创建本地仓库
2.为本地仓库配置可访问用户及其权限
3.使用浏览器访问本地仓库
六、使用TortoiseSvn客户端
1.下载地址
官网下载地址:点我下载
2.上传下载操作
(1)上传数据到本地仓库
(2)上传数据到远程仓库(SVN服务器)
(3)从服务器下载数据
或者
3.永久回滚到历史版本
执行该操作后,比该版本高级的版本将会被清除,并标识该版本为最新版本
选择目标版本进行回滚
4.临时回滚到历史版本
执行该操作后,只会临时切换回历史版本,可以随时再回到高版本中
5.删除远程仓库指定文件
- 先在本地删除指定文件
- 将删除操作提交到服务器
6.导入导出
-
check out检出的文件仍处于SVN版本控制中,与版本库保持关联,可以进行Svn Update或者Svn Commit等操作;同时导出文件夹下有一个.svn的隐藏文件夹,存储着一些版本的元数据信息
-
export 导出的文件脱离SVN版本控制,导出后也无法进行Update和Commit操作,导出文件夹下没有.svn目录
-
import导入仅仅是把文件导入到svn服务器中,而这个文件本身还只是一个普通的文件,与svn版本库没有关系
七、冲突的产生与解决
1.冲突的产生
无论哪种冲突都是发生在提交远程仓库的时候;无论哪种冲突产生的最底层原因就是克隆非最新的远程仓库的基础上再推送到远程仓库
2.冲突的解决
- 选中冲突待解决文件,右键解决冲突
- 手动编辑冲突文件
3.鉴于冲突产生的注意事项
在commit以前尽量先update
八、IDEA中使用Svn
1.在IDEA中配置SVN的路径
File | Settings | Version Control | Subversion
注意
2.给项目启用Svn控制
File | Settings | Version Control
3.在IDEA中启用Svn
![启用](https://img-blog.csdnimg.cn/20200827173555903.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0lUbGFueXVl,size_16,color_FFFFFF,t_70#pic_center
地址获取方式:
选择工作目录
4.使用IDEA中的SVN功能
(1)基本功能
- Update Project ===> 更新项目
- Commit changes ===> 提交项目上所有变化文件
- Compare with the Same Repository Version ===> 当前文件与服务器上该文件通版本的内容进行比较(如果当前编辑的文件没有修改,则是灰色不可点击)
- Show history ===> 显示当前文件的历史记录
- Revert ===> 还原当前被修改的文件到违背修改的版本状态下
(2)项目拓展功能
九、Svn的目录规范
- Trunk ===> 主干目录,此目录下的文件为基准文件
- Branches ===> 用于开发的分支目录
- Tags ===> 用于发布的版本目录
十、Svn分支与标记
1.分支的定义规范
Project name + 日期时间 + 功能点
2.Tags的定义规范
Project name + 版本号(三位数)
3.给项目打分支(或者Tag)
(1)新建标准仓库
(2)给项目打分支
4.合并分支到主干
注意: Tag在技术上也可以合并到主干,但是Tag一般代表一个项目的里程碑,行业规范不合并Tag到主干