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多用户开发】代码冲突解决办法相关推荐

  1. SVN多用户开发 代码冲突解决办法

    [SVN多用户开发]代码冲突&解决办法 SVN是一款集中式的代码存储工具,可以帮助多个用户协同开发同一应用程序. 但是SVN不能完全代替人工操作,有时也需要程序员自己进行沟通确认有效的代码. ...

  2. git代码冲突解决办法

    一. 前言   作者是一个工作2年的Java程序猿,因为自己经常用到git,每天都需要提交代码,有时候合并代码也会有一些类代码冲突,把自己的解决方法告知出来,让大家有一定的参考. 二. 冲突产生的原因 ...

  3. SVN提交代码冲突解决方法总结

    SVN提交代码冲突解决方法总结 在近期svn提交代码时遇到多种情况的问题,现做一个解决办法的总结如下: 插播一条:idea下被svn版本控制各类文件的颜色区分, 红棕色,未加入版本控制: 绿色,已经加 ...

  4. git merge git pull时候遇到冲突解决办法git stash

    git merge git pull时候遇到冲突解决办法git stash 在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息: error: Your local changes t ...

  5. git commit或者pull代码时提示代码冲突解决方法

    场景一 user0 有新提交 user1 没有pull -> 写新代码 -> pull -> 提示有冲突  解决办法一 -> stash save(把自己的代码隐藏存起来) - ...

  6. 哈希表及哈希冲突解决办法

    哈希表及哈希冲突解决办法 目录 什么是哈希表? 哈希表的数据结构 哈希冲突 哈希冲突解决办法 1. 什么是哈希表? 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直 ...

  7. hibernate开发错误及解决办法

    2019独角兽企业重金招聘Python工程师标准>>> hibernate开发错误及解决办法 <!-- attachment--> <!-- attachment ...

  8. 黑苹果 装SVN工具 cornerstone无法打开解决办法——网卡内建

    黑苹果 装SVN工具 cornerstone无法打开解决办法--网卡内建 具体内容,请参照远景帖子:http://bbs.pcbeta.com/viewthread-900017-1-1.html 转 ...

  9. git 本地与远程仓库出现代码冲突解决方法

    git 本地与远程仓库出现代码冲突解决方法 参考文章: (1)git 本地与远程仓库出现代码冲突解决方法 (2)https://www.cnblogs.com/heaven-xi/p/9703566. ...

最新文章

  1. python对于办公有什么帮助-日常工作中python能够有哪些帮助?
  2. 菜鸟学Linux命令:端口查看和操作命令
  3. 生物信息学搞计算机,生物信息学前景展望,谈谈感想(已经停止)
  4. C#.Net使用线程池(ThreadPool)与专用线程(Thread)
  5. excel打开csv错误换行_「乱吐槽·乱学习」excel高手捷径:一招鲜,吃遍天③
  6. pecl安装扩展(首选)
  7. python中debug有什么用途_Python debug 总结
  8. Ofbiz架构讲解与讨论(crud)
  9. upgrade cmake-gui version
  10. 修正win10部署JDK8(使用JDK文件夹中的自带JRE)
  11. Flink 大规模作业调度性能优化
  12. 前端开发的几种常用的编辑器
  13. 分类、回归和聚类辨析
  14. Linux 内核下载地址
  15. 负载均衡添加ssl证书
  16. 新技术在支付清算行业的创新应用
  17. 九阴服务器延迟高怎么解决,6月24日部分互通升级服务器延迟开服公告
  18. Android Studio 设置背景色、修改前进后退快捷键
  19. css 超链接样式设置
  20. 用计算机进行图片处理课后反思,使用曲线工具画图教学反思

热门文章

  1. Myeclipse中修改项目默认编码还是乱码?一步永久解决!
  2. 2022-2028年中国农副产品行业市场供需规模及未来前景分析报告
  3. 数据结构(05)— 线性单链表实战
  4. Python学习--not语句
  5. TensorRT原理图示
  6. 基于OpenSeq2Seq的NLP与语音识别混合精度训练
  7. 2021年大数据Hive(五):Hive的内置函数(数学、字符串、日期、条件、转换、行转列)
  8. CentOs7中安装python3.7.6
  9. Python数据挖掘1:创建一位数组和二维数组,取最大最小值,切片
  10. Error:(39, 13) Failed to resolve: com.android.support:appcompat-v7:26.0.0 [duplicate]