使用IDEA进行svn的协同开发
使用IDEA进行svn的协同开发
步入公司的第一步就是掌握版本控制工具的使用,常见的版本控制工具有两种方式,git常见于一些小的创业公司,项目小人员少,svn使用的公司规模较大,这里介绍svn使用的一些场景
假设小组中有两个人,组长,组员
场景一:组长创建svn的服务器端远程仓库
场景二:组长创建项目并提交到远程svn仓库
场景三:组员从远程svn仓库上获取项目源码
场景四:组员修改了部分源码,提交到远程仓库
场景五:组员提交到远程仓库遇到了一些问题
场景六:组长从远程仓库获取组员的提交
场景七:组员接受了一个新功能的任务,创建了一个分支并在分支上开发
场景八:组员把分支提交到远程svn仓库
场景九:组长获取组员提交的分支
场景十:组长把分支合并到主干
理论基础:
下图是svn与提交有关的三个命令对应的操作,Add命令是把文件从普通目录添加到本地仓库,Commit命令把本地仓库的提交同步到远程仓库。
工作区:没有任何标记的文件
本地仓库:IDEA工具里面的内容或项目在本地的地址
远程仓库:自己搭建的svn远程仓库
准备工作:
1.创建D://test_trunk目录作为组长的本地仓库,D://test_branch目录作为组员的本地仓库,这里先创建一个hello的maven工程作为项目
2.下载小乌龟客户端并安装 点击:小乌龟安装地址
可以官网下载,也可以安装下列软件下载
链接:https://pan.baidu.com/s/1y9blSwIuIK16_sNwcab2zQ
提取码:oxme
默认是:
选择entire feature will be installed安装如下图
3.配置IDEA中的svn
场景一:组长创建svn的服务器端远程仓库
这里就直接添加一条链接来说明,因为svn服务器的搭建有linux和windows两种,篇幅较大,总之得到了远程仓库的地址即可:https://P68T1U9IIYWDB40:8443/svn/hello/
搭建svn服务器的链接如下:
https://blog.****.net/m0_47379359/article/details/105797503
这里采用windwos版本的svn服务器端便于理解:
验证:如图所示
场景二:组长创建项目并提交到远程svn仓库
首先创建一个hellowrld在组长文件夹test_trunk中
然后将项目上传到svn服务器:
输入svn的远程仓库地址:
依次点击:
选择默认:
点击确定:
点击提交:
验证:这里采用windows版本的svn服务器端查看便于理解
场景三:组员从远程svn仓库上获取项目源码
组员此时已经拥有了远程仓库的地址,和账号密码
此时切换到test_branch文件夹模拟组员状态:
点击依次输入地址和用户名,密码克隆项目
选择地址:
选择第二个比较好:
验证:一路next,克隆完成
场景四:组员修改了部分源码,提交到远程仓库
注意:现在应该是组员状态的程序,test_branch文件夹的项目
这里简单修改一下内容:
直接提交:
验证:去svn服务器端查看是否改变:
场景五:组员提交到远程仓库遇到了一些问题
现在因为模拟的是helloworld一个非常简单的情况所以不会出问题,但是如果人数变多,项目变大不可避免的会出现一些其他问题:
问题1:提交时候产生冲突?
要解决这个问题首先我们要了解产生这个问题是为什么,冲突的产生简单来说
组长和组员都将项目下载到了本地仓库此时版本为1,同时开发,组长先提交了记作版本2,组员在版本1的基础上进行修改结果提交的时候也想要记作版本2,但是此时已经有了版本2了,所以冲突了
如何避免呢?在提交前先从远程仓库中更新到最新版本,这样就会减少冲突,但是无法消除冲突,总有时候你会遇到冲突那么就可以通过这种方式进行解决:
首先模拟组长提交项目:
组员修改项目进行提交:
修改到组员项目:
现在提交,发生错误:
果然那我应该如何解决呢?
点击查看差别:
左边:服务器代码,右边自己提交代码
知道不同之处后:进行如下操作
这里有三个选择:
accept yours:只用自己,不用别人的
accept theirs :只用别人,不用自己
merge: 两者比较使用
说实话,merge符合我们中国的中庸吗?对吧,所以平时选哪个应该很清楚了把
左边是服务器代码,中间是我们要提交的代码,右边是现在我们的代码
修改成功了:
注意修改成功了,还要提交一下才可以啊
问题2:提交上了一个带各种.ide文件等无用文件
解决这个问题我们可以通过设置一些忽略条件来完成
方式1:提交时候筛选,不用的就不勾了
方式2:提交前就对文件进行测试
下图操作2:是忽略文件
操作3:忽略文件夹
操作4:正则匹配忽略
现在是我们忽略的文件了:
可以和上图比较下,这样提交就会忽略这些东西了
问题3:提交了一个错误文件
解决这个问题很容易,退回之前的版本就可以了
点击确定后:
回退指定版本
场景六:组长从远程仓库获取组员的提交
注意:此时切换到组长所在的文件夹项目test_trunk
依次点击:
验证:项目发生变化
场景七:组员接受了一个新功能的任务,创建了一个分支
Trunk 主干目录,此目录下的文件为基准文件
Branches 用于开发的分支目录
Tags 用于发布的版本目录
分支的定义规则: Project name+日期时间+功能点
Tags的定义规则 Project name+版本号
版本号定义为三段数字:
编号 xxx.xxx.xxx 第一个:革命性的产品升级版 第二个:新功能版 第三个:修正bug
因为之前创建的是一个没有trunk,branches,tages的项目,所以现在创建一个文件夹作为分支
这里开始打分支:
创建分支:
验证分支:
场景八:组员在分支上进行开发,提交
首先将分支项目下载过来:
创建一个文件夹svn_my_branch作为分支开发的本地仓库
如图所示:
增加一条内容提交
验证:查看是否提交成功
场景九:组长切换分支查看内容
组长切换分支:
点击更新选择更新组员的分支
验证:查看内容是否有误
场景十:组长将分支内容合并到主分支
注意此时组长切换为主分支进行操作:
此时操作1为:分支,操作2为:主分支
检查无误后,取消操作三:
提交即可:
验证:查看历史记录:
svn常用命令:
使用命令来加快自己的操作,但是个人感觉不太好用
这里只放下链接: