【IntelliJ IDEA】【SVN】SVN详细的介绍和Idea中如何使用SVN

简介: SVN是Subversion的简称,是一个自由开源的版本控制系统。Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节早期版本控制使用的是CVS,后来SVN替代了CVS,随着android兴起,出现Git版本控制工具,后续我们会学到。

一、SVN介绍

SVN是Subversion的简称,是一个自由开源的版本控制系统。

Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节早期版本控制使用的是CVS,后来SVN替代了CVS,随着android兴起,出现Git版本控制工具,后续我们会学到。

1.1 SVN基本概念

1.png

**问题: 怎样让系统允许用户共享信息,而不会让他们因意外而互相干扰?**

- 复制-修改-合并方案(Subversion默认的模式)

在这种模型里,每一个客户读取项目配置库建立一个私有工作副本——版本库中文件和目录的本地映射。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。

- 锁定-修改-解锁方案

在这样的模型里,在一个时间段里配置库的一个文件只允许被一个人修改。此模式不适合软件开发这种工作。

1.2 SVN架构

2.png

Subversion支持Linux和Windows,更多是安装在Linux下。

svn服务器有2种运行方式:独立服务器和借助apache运行。两种方式各有利弊,用户可以自行选择。

svn存储版本数据也有2种方式:BDB一种事务安全型表类型和FSFS一种不需要数据库的存储系统。

因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

二、SVN使用

本章节主要介绍常用的svn工具,如window下svn服务器VisualSVN,客户端工具TortoiseSVN以及idea svn插件的使用。

SVN是一种集中式管理代码的版本控制系统,原理就是把代码都保存到一个固定的位置(仓库),每次从这个位置拷贝更新代码,进行编辑;再把修改后的代码提交到该目录中。多人协作开发也是如此。因此需要一个类似Oracle或者Mysql的服务器用于保存和管理库文件(要保存的代码等文件)的服务端——VisualSVN Server。还需要一个用户的操作端,用于提交更新检出代码,常用的有idea的Svn插件,以及TortoiseSVN(小乌龟)。

SubVersion 官网:http://subversion.apache.org/

2.1 服务器端VisualSVN安装与配置

2.1.1 VisualSVN下载

3.png

2.1.2 VisualSVN安装与创建仓库

4.png5.png

在开始运行中录入 services.msc

6.png

这个服务要开启 在开始运行中查找visualSVN Server Manager就可以打开图形化管理界面

7.png

2.1.3 VisualSVN创建工程目录

8.png

2.1.4 VisualSVN 权限控制

创建用户

9.png10.png

创建组

11.png

分配权限

12.png13.png

2.2 客户端TortoiseSVN安装与使用

TortoiseSVN是一个基于windows系统的svn客户端图形化界面.

2.2.1 Tortoise SVN下载

14.png

2.2.2 Tortoise SVN安装

2.2.3 Tortoise SVN 常用操作

2.2.3.1 浏览仓库

15.png

正常情况下,在浏览仓库时会要求录入username,与password 我们可以清空svn客户端的缓存

16.png17.png

2.2.3.2 checkout

18.png

注意:检出后会有一个.svn隐藏目录  


19.png

 

2.2.3.3 add


20.png

2.2.3.4 commit


20190113132934612.png

21.png

22.png

2.2.3.5 update

Update,它是更新操作,可以将svn服务器上的内容更新到本地


23.png

2.2.3.6 更新到历史版本

查看当前日志


24.png25.png

也可以通过下面的方式来更新历史版本


26.png

 

2.2.3.7 delete

标记删除操作,本地文件会删除,我们需要进行提交,才能真正从服务器删除


27.png

2.2.3.8 导入与导出

Import将本地资源导入到svn服务器

Export导出项目,和checkout的区别,它不存在.svn隐藏文件

 

2.2.3.9 冲突问题与解决

多个用户同时操作同一个文件时,就可能产生冲突情况。


28.png


这个冲突产生后如何解决,我们可以采用手动Merge,解决冲突后,重新commit.


29.png


HelloWorld.java 它是服务器上的文件与本地文件合并

HelloWorld.java.mine 本地修改后的文件

HelloWorld.java.r4 修改前的文件

HelloWorld.java.r5 对方修改后的文件


30.png

 

2.3 IDEA下 SVN 配置与使用

2.3.1 IDEA下svn配置

如果想要看IDEA下svn配置更加详细的说明,可以查看 [我的另一篇文章](https://blog.csdn.net/weixin_44299027/article/details/86297470)。

前提是我们的电脑上已经安装了TortoiseSVN.


31.png


这样安装就完成了


32.png


1. Update Project 更新项目

2. Commit changes 提交项目上所有变化文件

3. Compare with the Same Repository Version 当前文件与服务器上该文件通版本的内容进行比较。如果当前编辑的文件没有修改,则是灰色不可点击。

4. Show history 显示当前文件的历史记录

5. Revert 还原当前被修改的文件到违背修改的版本状态下


33.png


1. Local Changes 本地修改过的文件都会出现在这里

2. Repository svn仓库所有提交记录

3. Incoming 本地还没有更新的别人提交的代码

 

2.3.2 IDEA 下SVN使用

2.3.2.1 share project


34.png

 

2.3.2.2 checkout


35.png

2.3.2.3 add commit update


36.png

 

2.3.2.4 ignored


37.png38.png

 

2.3.2.5 解决冲突


39.png40.png

 

三、SVN规范

3.1 SVN目录规范

在visualSVN中创建仓库时,可以选择svn目录结构


41.png


- Trunk 主干目录,此目录下的文件为基准文件

- Branches 用于开发的分支目录

- Tags 用于发布的版本目录

假设有一个项目OA,我们完成了1.0版本,这时就可以打一个tags,后续我们在OA项目上添加一个新的模块(及时通讯),我们就可以开一个分支,又有一个公司需要在我们OA基础上添加财务管理模块,我们又可以打一个分支。我们后续针对OA的1.0版本在升级,我们不需要原来附加功能,就可以在原来的主干上继续开发,形成OA2.0版本,开发完成后就可以在打一个tags。

3.2 分支与标记

3.2.1 分支或标记规范

分支的定义规则: Project name+日期时间+功能点 Tags的定义规则 Project name+版本号 版本号定义为三段数字编号 xxx.xxx.xxx 第一个:革命性的产品升级版 第二个:新功能版 第三个:修正bug


42.png43.png


Tags一般是只读,它代表的是发布的版本,所以我们不要进行改变。

3.3 主干与分支或标记的合并

3.3.1 主干合并到分支

首先保证主干是最新的(先update),在分支这边进行操作


44.png45.png46.png


介绍到这里,这篇文章就先告一段落了。

 

`**本文首发于CSDN,为博主原创文章,如果需要转载,请注明出处,谢谢!**`



完结!

相关文章
|
5月前
|
Java 编译器 Maven
使用intellij idea搭建SSM架构的maven项目 详细
使用intellij idea搭建SSM架构的maven项目 详细
95 4
|
4月前
|
IDE Oracle Java
day4:JDK、IntelliJ IDEA的安装和环境变量配置
【7月更文挑战第4天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
217 0
|
4月前
|
网络协议 安全 Linux
在IntelliJ IDEA中使用固定公网地址远程SSH连接服务器环境进行开发
在IntelliJ IDEA中使用固定公网地址远程SSH连接服务器环境进行开发
100 2
|
5月前
|
Linux 开发工具 Windows
在WSL2中安装IntelliJ IDEA开发工具
在WSL2中安装IntelliJ IDEA开发工具
582 2
|
5月前
|
IDE Java Scala
IntelliJ IDEA 2023.3 最新变化2
IntelliJ IDEA 2023.3 最新变化
|
4月前
|
缓存 Java Maven
IntelliJ IDEA中无法加载jar包导致出现“cannot resolve symbol...”问题的解决
IntelliJ IDEA中无法加载jar包导致出现“cannot resolve symbol...”问题的解决
182 0
|
4月前
|
存储 Oracle Java
Java面试题:描述如何使用Eclipse或IntelliJ IDEA进行Java开发?
Java面试题:描述如何使用Eclipse或IntelliJ IDEA进行Java开发?
49 0
|
5月前
|
SQL 分布式计算 大数据
MaxCompute产品使用合集之如何在本地IDE(如IntelliJ IDEA)中配置MaxCompute (mc) 的任务和调试SQL
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5月前
|
IDE Java 项目管理
Java入门——Intellij IDEA简介、使用IDEA开发程序、IDEA常用快捷键、IDEA其他操作
Java入门——Intellij IDEA简介、使用IDEA开发程序、IDEA常用快捷键、IDEA其他操作
80 3
|
5月前
|
监控 IDE Java
探索 IntelliJ IDEA 中 Spring Boot 运行配置选项及其作用
探索 IntelliJ IDEA 中 Spring Boot 运行配置选项及其作用
500 0