SVN解决冲突

SVN冲突出现场景

如今是一个团结协作的时代,开发一个系统,往往会多人协作共同完成。版本管理是必不可少的,常用的软件有Git,SVN等。今天说一下,SVN管理版本时,如果出现冲突后,如何快速解决冲突。

首先说明一个问题,有一种情况无论如何都不会出现冲突。假如有一个叫qaz的程序员,他checkout了版本库,这样他拥有了一个工作副本。然后,他修改了某个文件IMRoot.cscommit到SVN,并且这个文件保证不会有其他人在他们的工作副本修改并提交到SVN。这种情况下,无论qaz 如何修改IMRoot.cs ,在commit时都不会发生冲突。

以上说了一种不会出现冲突的情况,那么什么应用场合可能会出现冲突呢?假如程序员wsx 他会修改文件 IMRoot.cs 并commit 到SVN,此时可能会引发冲突。

实例分析

下面,我们根据实际应用场合,模拟出现冲突,到如何通过SVN提供的Edit Conflicts 界面,通过颜色标识和操作按钮,快速准确地合并解决冲突。

开始,IMRoot.cs 文件主题内容是这样的,命名空间为了理解方便省略掉。

qaz 在文件的第14 行做了修改,其他的未作任何改动,并且将修改commit到了SVN。

wsx 在在第19行做了修改,修改如下,

并且在提交前update了(注意因为这个文件已经被qaz 做了修改,所以wsx 如果commit前不update,SVN是不允许提交的),然后commit,此时,SVN不会引发冲突,因为修改不是在同一行。SVN将qaz 的修改合并到了wsx 拥有的工作副本中,合并后文件如下所示,

为了故意引发冲突,假设qaz 和 wsx 同时都修改了第29行。前者修改第29行为如下,并且commite 到了SVN中

后者修改也同时修改了这一行,这意味他并没有update 这个文件,

然后他commit 到SVN时,提示先update ,紧接着出现冲突,如下所示,

此时,找到这个文件,右键选择Edit conflicts 按钮,弹出编辑冲突的界面,这才到了重点!

从上图可以看到,主要有3个子窗口组成,左上Theirs 为SVN版本库中(也就是qaz 刚才修改提交到SVN的版本),右上 Mine 为 wsx (正在提交到SVN发现冲突的他)的工作副本文件,下方为合并他俩的文件后的显示窗口。

以下为这3个窗口的局部视图,依次为左上,右上,下方,

 
左上

 
右上


下方

当面对以上3个窗口时,还是容易让人发蒙,尤其是文件比较复杂,冲突一大片,各种颜色掺杂在一起,不知如何下手,害怕把其他文件意外破坏和文件合并错误。那么怎么办呢?我们不妨先从简单的文件冲突入手,彻底理解各种颜色的含义,冲突行是如何标记的,这样我们才敢大胆地使用这个界面进行代码合并操作,不用担心合并后,把别的文件无辜干扰了或者出现合并错误的问题。

仔细观察以上3个窗口,我们发现,28行和29行之间多出来一行,即橙色行,并且Theirs 和Mine 都含有这一行,这个是未冲突前,此行的内容,即刚开始的版本。第29行是爆红行、冲突行,相应字段还是黄色警示,并且在第3个窗口(下方窗口)第29行全是?????这种符号,意味着无法合并他俩对此行的同时修改,需要我们判断,要么采取Theirs 的,要么采取Mine 的,要么采取上一版本,要么重新商量一个相同的。SVN也提供了几个方便的右键按钮,提示如何做出这些选择,

use this text block : 选取选中行的内容 
use this whole file :选取选中行所在文件的全部内容 
use text block from mine before theirs :先用Mine的内容,后面接着用theirs的

假如第29行我们想采用qaz 的修改,那么,我们在左上窗口,选中第29行,右键选择 use this text block ,然后下方的视图变为如下,

第29行由一行??????变为左上窗口第29行的内容,颜色由爆红变为了浅绿色。这时候注意观察,在上一行橙色显示内容代表什么意思,注意最左侧有个 “-”提示,代表此行不会纳入合并文件中。

假如第29 行,我们都想纳入qaz 和wsx 的修改,此时我们在左上窗口选择,use text block from mine before theirs ,即先用Mine的内容,后面接着用theirs的,选择后下方窗口合并内容如下,

可以看到,第29行,先显示Mine的,然后显示Theirs的。

这些操作后,我们点击上方的Mark as Resolved 按钮,然后保存即可。这样冲突就被解决掉了。然后wsx 再commit 自己的内容到SVN。

冲突深度详细解决方案及可能带来的隐患思考

时间: 2024-10-16 07:53:58

SVN解决冲突的相关文章

SVN解决冲突的方法

SVN管理代码工具在群组合作开发的过程中,若多人同时修改一个文件,就会出现冲突的情况. 冲突演示: 有A.B两个用户,他们各自从svn服务器中检出了file.txt文件,此时A.B.服务器三个地方的file.txt的版本号假设都是3. A电脑何B电脑的file.txt文件内容相同,如下所示: param1=1: 接下来,B用户添加内容并提交,修改后的文件内容如下: param1=1: param2=2: 此时B用户和服务器的file.txt的版本都变为4,只有A用户的file.txt的版本还为3

linux下svn解决冲突

1. 使用svn status + 文件路径+文件名 查看文件或目录的状态(该状态可自行进行百度),属性状态为'C'的表示,改文件或目录处于冲突状态 2. 使用svn resolve --accept  working +路径+文件名 解决冲突 执行这个命令会删除 .mine,.r等文件 3. 使用svn resolved + 路径+文件名 标识文件已经解决冲突 4. 重新提交文件:svn commit -m "提交注释" + 路径+ 文件名  即可! 原文地址:https://www

svn解决冲突后还会出现黑*的解决办法

A conflict in the working copy obstructs the current operationorg.tigris.subversion.javahl.ClientException: A conflict in the working copy obstructs the current operationsvn: Commit failed (details follow):svn: Aborting commit: 'D:/eclipse-java-ganym

svn 如何解决冲突

项目中,往往不止你一人开发,多人开发,难免会有代码的冲突.彼此间谁也不能保证不会修改同个文件.如果修改了同个方法的内容.这时提交到svn是会提示代码冲突的. 当然,冲突是可控的,但不能避免.每次写代码的时候,标准的姿势是先update,再修改提交. 下面,我们说下冲突后该如何解决? 文件冲突格式如下 : <<<<<<< filename your changes ======= code merged from repository >>>>

svn conflict 冲突解决

转自:http://www.gezila.com/tutorials/17290.html 目录: 1. 同一处修改文件冲突 1.1. 解决方式一 1.2. 解决方式二 1.3. 解决总结 2. 手动解决冲突 2.1. 冲突背景1 2.2. 冲突背景2 2.3. 冲突解决 1. 同一处修改文件冲突 开发人员都知道代码管理工具是开发中一个必不可少的工具,这里也不废话详细介绍了.不管你个人喜欢git还是svn还是其他,但还有一大部分公司在使用svn做代码管理工具.这里详细介绍下SVN提交文件时冲突问

MyEclipse SVN插件冲突导致不能使用解决办法

最近,由于安装插件导致Myeclipse的SVN插件不能使用,出现的问题实在很烦恼,通过试验发现当新安装的插件安装完毕后,只需要把MyEclipse 6.5/eclipse/configuration目录下的org.eclipse.update目录删除即可,并且这个目录在Myeclipse重启之后会重新生成. MyEclipse SVN插件冲突导致不能使用解决办法,布布扣,bubuko.com

SVN版本冲突解决

解决冲突有三种选择: A.放弃自己的更新,使用svn revert(回滚),然后提交.在这种方式下不需要使用svn resolved(解决) B.放弃自己的更新,使用别人的更新.使用最新获取的版本覆盖目标文件,执行resolved filename并提交(选择文件—右键—解决). C.手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件.然后执行resolved filename来解除冲突,最后提交.

SVN 更新 提交 解决冲突

简介 原则: 最重要的:先更新再提交(没有冲突时),也可以先同步再更新后提交(有冲突时) 更新就是将本地代码升级到服务器端版本,更新并不会覆盖或删除我们本地修改的内容:若没有冲突,则相当于,是将我们修改的内容移植到服务器最新版本上了(提交后生效):若有冲突,则必须先解决冲突才能提交. 同步(与资源库同步)是指在一个同步透视图中比较本地和服务端有哪些差异,他会把有差异的文件及文件中的模块标记出来,是在检查冲突及合并版本时使用的:当然解决冲突也不一定必须在更新之前或必须在eclipse中,也可以在更

[转]SVN版本冲突解决详解

原文地址:http://blog.csdn.net/windone0109/article/details/4857044 版本冲突原因: 假设A.B两个用户都在版本号为100的时候,更新了kingtuns.txt这个文件,A用户在修改完成之后提交kingtuns.txt到服务器,这个时候提交成功,这个时候kingtuns.txt文件的版本号已经变成101了.同时B用户在版本号为100的kingtuns.txt文件上作修改,修改完成之后提交到服务器时,由于不是在当前最新的101版本上作的修改,所