使用IDEA进行svn的协同开发

使用IDEA进行svn的协同开发

步入公司的第一步就是掌握版本控制工具的使用,常见的版本控制工具有两种方式,git常见于一些小的创业公司,项目小人员少,svn使用的公司规模较大,这里介绍svn使用的一些场景

假设小组中有两个人,组长,组员

场景一:组长创建svn的服务器端远程仓库

场景二:组长创建项目并提交到远程svn仓库

场景三:组员从远程svn仓库上获取项目源码

场景四:组员修改了部分源码,提交到远程仓库

场景五:组员提交到远程仓库遇到了一些问题

场景六:组长从远程仓库获取组员的提交

场景七:组员接受了一个新功能的任务,创建了一个分支并在分支上开发

场景八:组员把分支提交到远程svn仓库

场景九:组长获取组员提交的分支

场景十:组长把分支合并到主干

理论基础:

下图是svn与提交有关的三个命令对应的操作,Add命令是把文件从普通目录添加到本地仓库,Commit命令把本地仓库的提交同步到远程仓库。

工作区:没有任何标记的文件

本地仓库:IDEA工具里面的内容或项目在本地的地址

远程仓库:自己搭建的svn远程仓库
使用IDEA进行svn的协同开发

准备工作:

1.创建D://test_trunk目录作为组长的本地仓库,D://test_branch目录作为组员的本地仓库,这里先创建一个hello的maven工程作为项目

2.下载小乌龟客户端并安装 点击:小乌龟安装地址
可以官网下载,也可以安装下列软件下载
链接:https://pan.baidu.com/s/1y9blSwIuIK16_sNwcab2zQ

提取码:oxme
使用IDEA进行svn的协同开发

默认是:
使用IDEA进行svn的协同开发

选择entire feature will be installed安装如下图
使用IDEA进行svn的协同开发

3.配置IDEA中的svn
使用IDEA进行svn的协同开发

场景一:组长创建svn的服务器端远程仓库

这里就直接添加一条链接来说明,因为svn服务器的搭建有linux和windows两种,篇幅较大,总之得到了远程仓库的地址即可:https://P68T1U9IIYWDB40:8443/svn/hello/

搭建svn服务器的链接如下:

https://blog.csdn.net/m0_47379359/article/details/105797503

这里采用windwos版本的svn服务器端便于理解:

验证:如图所示

使用IDEA进行svn的协同开发

场景二:组长创建项目并提交到远程svn仓库

首先创建一个hellowrld在组长文件夹test_trunk中
使用IDEA进行svn的协同开发

然后将项目上传到svn服务器:
使用IDEA进行svn的协同开发

输入svn的远程仓库地址:
使用IDEA进行svn的协同开发

依次点击:
使用IDEA进行svn的协同开发

选择默认:
使用IDEA进行svn的协同开发

点击确定:
使用IDEA进行svn的协同开发

点击提交:
使用IDEA进行svn的协同开发

验证:这里采用windows版本的svn服务器端查看便于理解

使用IDEA进行svn的协同开发

场景三:组员从远程svn仓库上获取项目源码

组员此时已经拥有了远程仓库的地址,和账号密码

此时切换到test_branch文件夹模拟组员状态:
使用IDEA进行svn的协同开发

点击依次输入地址和用户名,密码克隆项目
使用IDEA进行svn的协同开发

选择地址:
使用IDEA进行svn的协同开发

选择第二个比较好:
使用IDEA进行svn的协同开发

验证:一路next,克隆完成

使用IDEA进行svn的协同开发

场景四:组员修改了部分源码,提交到远程仓库

注意:现在应该是组员状态的程序,test_branch文件夹的项目

这里简单修改一下内容:
使用IDEA进行svn的协同开发

直接提交:
使用IDEA进行svn的协同开发

验证:去svn服务器端查看是否改变:

使用IDEA进行svn的协同开发

场景五:组员提交到远程仓库遇到了一些问题

现在因为模拟的是helloworld一个非常简单的情况所以不会出问题,但是如果人数变多,项目变大不可避免的会出现一些其他问题:

问题1:提交时候产生冲突?

要解决这个问题首先我们要了解产生这个问题是为什么,冲突的产生简单来说

组长和组员都将项目下载到了本地仓库此时版本为1,同时开发,组长先提交了记作版本2,组员在版本1的基础上进行修改结果提交的时候也想要记作版本2,但是此时已经有了版本2了,所以冲突了

如何避免呢?在提交前先从远程仓库中更新到最新版本,这样就会减少冲突,但是无法消除冲突,总有时候你会遇到冲突那么就可以通过这种方式进行解决:

首先模拟组长提交项目:
使用IDEA进行svn的协同开发

组员修改项目进行提交:

修改到组员项目:
使用IDEA进行svn的协同开发

现在提交,发生错误:
使用IDEA进行svn的协同开发

果然那我应该如何解决呢?

点击查看差别:
使用IDEA进行svn的协同开发

左边:服务器代码,右边自己提交代码
使用IDEA进行svn的协同开发

知道不同之处后:进行如下操作
使用IDEA进行svn的协同开发
使用IDEA进行svn的协同开发
使用IDEA进行svn的协同开发

这里有三个选择:

accept yours:只用自己,不用别人的

accept theirs :只用别人,不用自己

merge: 两者比较使用

说实话,merge符合我们中国的中庸吗?对吧,所以平时选哪个应该很清楚了把

左边是服务器代码,中间是我们要提交的代码,右边是现在我们的代码
使用IDEA进行svn的协同开发

修改成功了:
使用IDEA进行svn的协同开发

注意修改成功了,还要提交一下才可以啊

问题2:提交上了一个带各种.ide文件等无用文件

解决这个问题我们可以通过设置一些忽略条件来完成

方式1:提交时候筛选,不用的就不勾了
使用IDEA进行svn的协同开发

方式2:提交前就对文件进行测试
使用IDEA进行svn的协同开发

下图操作2:是忽略文件

操作3:忽略文件夹

操作4:正则匹配忽略
使用IDEA进行svn的协同开发

现在是我们忽略的文件了:
使用IDEA进行svn的协同开发

可以和上图比较下,这样提交就会忽略这些东西了

问题3:提交了一个错误文件

解决这个问题很容易,退回之前的版本就可以了
使用IDEA进行svn的协同开发

点击确定后:
使用IDEA进行svn的协同开发

回退指定版本

场景六:组长从远程仓库获取组员的提交

注意:此时切换到组长所在的文件夹项目test_trunk

依次点击:
使用IDEA进行svn的协同开发

验证:项目发生变化

使用IDEA进行svn的协同开发

场景七:组员接受了一个新功能的任务,创建了一个分支

Trunk 主干目录,此目录下的文件为基准文件
Branches 用于开发的分支目录
Tags 用于发布的版本目录

分支的定义规则: Project name+日期时间+功能点

Tags的定义规则 Project name+版本号

版本号定义为三段数字:
编号 xxx.xxx.xxx 第一个:革命性的产品升级版 第二个:新功能版 第三个:修正bug

因为之前创建的是一个没有trunk,branches,tages的项目,所以现在创建一个文件夹作为分支
使用IDEA进行svn的协同开发

这里开始打分支:
使用IDEA进行svn的协同开发

创建分支:
使用IDEA进行svn的协同开发

验证分支:

使用IDEA进行svn的协同开发

场景八:组员在分支上进行开发,提交

首先将分支项目下载过来:

创建一个文件夹svn_my_branch作为分支开发的本地仓库
使用IDEA进行svn的协同开发

如图所示:
使用IDEA进行svn的协同开发

增加一条内容提交
使用IDEA进行svn的协同开发

验证:查看是否提交成功

使用IDEA进行svn的协同开发

场景九:组长切换分支查看内容

组长切换分支:
使用IDEA进行svn的协同开发

点击更新选择更新组员的分支
使用IDEA进行svn的协同开发

验证:查看内容是否有误

使用IDEA进行svn的协同开发

场景十:组长将分支内容合并到主分支

注意此时组长切换为主分支进行操作:
使用IDEA进行svn的协同开发

此时操作1为:分支,操作2为:主分支
使用IDEA进行svn的协同开发

检查无误后,取消操作三:
使用IDEA进行svn的协同开发

提交即可:

验证:查看历史记录:

使用IDEA进行svn的协同开发

svn常用命令:

使用命令来加快自己的操作,但是个人感觉不太好用

这里只放下链接:

svn命令链接

svn命令链接