【SVN多用户开发】代码冲突解决办法
SVN是一款集中式的代码存储工具,可以帮助多个用户协同开发同一应用程序。
但是SVN不能完全代替人工操作,有时也需要程序员自己进行沟通确认有效的代码。
下面就简单的看一下,常见的代码冲突以及解决方法。
总结起来,无非是:
1 避免开发人员共同开发同一文件
2 开发前需要时常更新本地代码库
修改同一文件不同位置引发的冲突
首先看一下问题背景:
样例场景中有连个用户:xingoo和test。他们共同开发一个程序,改程序只有一个文件,原始的代码如下:
public void Test{System.out.println("Test!");return 1; }
此时用户xingoo,修改代码第2行,修改打印语句!
public void Test{System.out.println("Test!xingoo");return 1; }
用户test,修改代码第3行,修改返回值
public void Test{System.out.println("Test!");return 0; }
此时xingoo用户先提交了代码,当test提交代码时,提示错误:
提示用户该文件已经过期,需要先更新文件。
此时,SVN会自动把其他用户修改的操作更新到该文件中(前提是不同用户修改的位置不同),并且保存当前用户修改的部分。
点击更新,更新代码。
观察代码发现,已经更新为:
public void Test{System.out.println("Test!xingoo");return 0; }
再次提交,提示成功:
这种情况,是最简单的代码冲突样例。不同用户修改了不同位置的代码,因此只需要在提交前进行更新,就可以解决冲突。
那么如果用户修改的是同一位置呢?
修改同一文件相同位置引发的冲突
前面例子中,xingoo的代码当前为,版本号为9:
public void Test{System.out.println("Test!xingoo");return 1; }
test的代码为,版本号为10:
public void Test{System.out.println("Test!xingoo");return 0; }
此时test的代码时最新版本的。
如果此时,xingoo用户,想要修改 return 1; 部分的代码,提交时会发生什么呢?
再次提交遇到错误:
点击OK后,提示更新或取消,点击更新,更新代码!
再次报错,提示:文件存在冲突!
此时观察文件夹发现,多了3个文件
分别打开这3个文件:
test.txt中的内容,该文件记录了冲突的详细内容,
其中<<<<<<.mine到====之间为当前用户修改的内容;
====到>>>>>.r10为版本库中的内容:
public void Test{System.out.println("Test!xingoo"); <<<<<<< .minereturn 2; =======return 0; >>>>>>> .r10 }
test.txt.mine 记录当前用户修改后的文件内容快照
public void Test{System.out.println("Test!xingoo");return 2; }
test.txt.r9 记录当前用户修改前,版本库中的内容快照
public void Test{System.out.println("Test!xingoo");return 1; }
test.txt.r10 记录当前版本库中内容快照
public void Test{System.out.println("Test!xingoo");return 0; }
通过这四个文件就可以很快速的发现,哪里有冲突。
至于如何修改,这里推荐:
直接拷贝mine文件,然后把r10文件的r10后缀去掉,进行更新。更新后,对比mine中的内容在进行修改。
也可以直接与其他人员进行协商沟通;更新版本库中的内容。
通过TortoiseSVN进行代码对比
有时候,需要对比文件的历史修改内容,可以直接在该文件上右键,选择Diff
该操作会自动对比代码库中文件的内容。
通过TortoiseSVN进行版本对比
也可以通过查看文件的历史版本,来对比代码:
选择Show log菜单
在弹出对话框中,上面列出最近的几个版本;可以直接双击下方蓝色的文件名称,就可以直接使当前文件与该版本的文件进行对比。
参考
【1】《版本控制之道》
【2】慕课网,SVN版本控制:http://www.imooc.com/learn/109
转载于:https://www.cnblogs.com/xing901022/p/4402686.html
【SVN多用户开发】代码冲突解决办法相关推荐
- SVN多用户开发 代码冲突解决办法
[SVN多用户开发]代码冲突&解决办法 SVN是一款集中式的代码存储工具,可以帮助多个用户协同开发同一应用程序. 但是SVN不能完全代替人工操作,有时也需要程序员自己进行沟通确认有效的代码. ...
- git代码冲突解决办法
一. 前言 作者是一个工作2年的Java程序猿,因为自己经常用到git,每天都需要提交代码,有时候合并代码也会有一些类代码冲突,把自己的解决方法告知出来,让大家有一定的参考. 二. 冲突产生的原因 ...
- SVN提交代码冲突解决方法总结
SVN提交代码冲突解决方法总结 在近期svn提交代码时遇到多种情况的问题,现做一个解决办法的总结如下: 插播一条:idea下被svn版本控制各类文件的颜色区分, 红棕色,未加入版本控制: 绿色,已经加 ...
- git merge git pull时候遇到冲突解决办法git stash
git merge git pull时候遇到冲突解决办法git stash 在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息: error: Your local changes t ...
- git commit或者pull代码时提示代码冲突解决方法
场景一 user0 有新提交 user1 没有pull -> 写新代码 -> pull -> 提示有冲突 解决办法一 -> stash save(把自己的代码隐藏存起来) - ...
- 哈希表及哈希冲突解决办法
哈希表及哈希冲突解决办法 目录 什么是哈希表? 哈希表的数据结构 哈希冲突 哈希冲突解决办法 1. 什么是哈希表? 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直 ...
- hibernate开发错误及解决办法
2019独角兽企业重金招聘Python工程师标准>>> hibernate开发错误及解决办法 <!-- attachment--> <!-- attachment ...
- 黑苹果 装SVN工具 cornerstone无法打开解决办法——网卡内建
黑苹果 装SVN工具 cornerstone无法打开解决办法--网卡内建 具体内容,请参照远景帖子:http://bbs.pcbeta.com/viewthread-900017-1-1.html 转 ...
- git 本地与远程仓库出现代码冲突解决方法
git 本地与远程仓库出现代码冲突解决方法 参考文章: (1)git 本地与远程仓库出现代码冲突解决方法 (2)https://www.cnblogs.com/heaven-xi/p/9703566. ...
最新文章
- python对于办公有什么帮助-日常工作中python能够有哪些帮助?
- 菜鸟学Linux命令:端口查看和操作命令
- 生物信息学搞计算机,生物信息学前景展望,谈谈感想(已经停止)
- C#.Net使用线程池(ThreadPool)与专用线程(Thread)
- excel打开csv错误换行_「乱吐槽·乱学习」excel高手捷径:一招鲜,吃遍天③
- pecl安装扩展(首选)
- python中debug有什么用途_Python debug 总结
- Ofbiz架构讲解与讨论(crud)
- upgrade cmake-gui version
- 修正win10部署JDK8(使用JDK文件夹中的自带JRE)
- Flink 大规模作业调度性能优化
- 前端开发的几种常用的编辑器
- 分类、回归和聚类辨析
- Linux 内核下载地址
- 负载均衡添加ssl证书
- 新技术在支付清算行业的创新应用
- 九阴服务器延迟高怎么解决,6月24日部分互通升级服务器延迟开服公告
- Android Studio 设置背景色、修改前进后退快捷键
- css 超链接样式设置
- 用计算机进行图片处理课后反思,使用曲线工具画图教学反思
热门文章
- Myeclipse中修改项目默认编码还是乱码?一步永久解决!
- 2022-2028年中国农副产品行业市场供需规模及未来前景分析报告
- 数据结构(05)— 线性单链表实战
- Python学习--not语句
- TensorRT原理图示
- 基于OpenSeq2Seq的NLP与语音识别混合精度训练
- 2021年大数据Hive(五):Hive的内置函数(数学、字符串、日期、条件、转换、行转列)
- CentOs7中安装python3.7.6
- Python数据挖掘1:创建一位数组和二维数组,取最大最小值,切片
- Error:(39, 13) Failed to resolve: com.android.support:appcompat-v7:26.0.0 [duplicate]