本文和大家一起来学习SVN冲突解决和winmerge使用手册,本文介绍了几个SVN冲突解决的方法,希望大家通过本文的学习能够掌握,欢迎大家一起来学习。
本节向大家介绍一下SVN冲突解决和winmerge使用手册问题,在学习SVN的过程中,难免会遇到SVN冲突问题,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西。
解决版本冲突的命令。在冲突解决之后,需要使用svnresolved来告诉subversion冲突解决,这样才能提交更新。冲突发生时,subversion会在WorkCopy中保存所有的目标文件版本(上次更新版本、当前获取的版本,即别人提交的版本、自己更新的版本、目标文件。假设文件名是sandwich.txt,对应的文件名分别是:sandwich.txt.r1、sandwich.txt.r2、sandwich.txt.mine、sandwich.txt)。同时在目标文件中标记来自不同用户的更改。
解决SVN冲突的办法:
-手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行svnresolvedfilename来解除冲突,最后提交。
-放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行svnresolvedfilename并提交。
-放弃自己的更新,使用svnrevert,然后提交。在这种方式下不需要使用svnresolved。
对于svnresolved命令需要非常小心,必须是非常确定冲突已经解决才能使用。否则,会导致Subversion以为冲突解决,而使代码库不正确。
解决冲突详细文档:http://svnbook.subversion.org.cn/1.2/svn.tour.cycle.html#svn.tour.cycle.resolve
解决冲突(合并别人的修改)
我们可以使用svnstatus-u来预测冲突,当你运行svnupdate一些有趣的事情发生了:
$svnupdate
UINSTALL
GREADME
Cbar.c
Updatedtorevision46.
U和G没必要关心,文件干净的接受了版本库的变化,文件标示为U表明本地没有修改,文件已经根据版本库更新。G标示合并,标示本地已经修改过,与版本库没有重迭的地方,已经合并。
但是C表示冲突,说明服务器上的改动同你的改动冲突了,你需要自己手工去解决。当冲突发生了,有三件事可以帮助你注意到这种情况和解决问题:
Subversion打印C标记,并且标记这个文件已冲突。
如果Subversion认为这个文件是可合并的,它会置入SVN冲突标记—特殊的横线分开冲突的“两面”—在文件里可视化的描述重叠的部分(Subversion使用svn:mime-type属性来决定一个文件是否可以使用上下文的,以行为基础合并,更多信息可以看“svn:mime-type”一节)。
对于每一个冲突的文件,Subversion放置三个额外的未版本化文件到你的工作拷贝:filename.mine
你更新前的文件,没有冲突标志,只是你最新更改的内容。(如果Subversion认为这个文件不可以合并,.mine文件不会创建,因为它和工作文件相同。)
filename.rOLDREV这是你的做更新操作以前的BASE版本文件,就是你在上次更新之后未作更改的版本。
filename.rNEWREV这是你的Subversion客户端从服务器刚刚收到的版本,这个文件对应版本库的HEAD版本。
这里OLDREV是你的.svn目录中的修订版本号,NEWREV是版本库中HEAD的版本号。
举一个例子,Sally修改了sandwich.txt,Harry刚刚改变了他的本地拷贝中的这个文件并且提交到服务器,Sally在提交之前更新它的工作拷贝得到了冲突:
$svnupdate
Csandwich.txt
Updatedtorevision2.
$ls-1
sandwich.txt
sandwich.txt.mine
sandwich.txt.r1
sandwich.txt.r2
在这种情况下,Subversion不会允许你提交sandwich.txt,直到你的三个临时文件被删掉。
$svncommit--message"Addafewmorethings"
svn:Commitfailed(detailsfollow):
svn:Abortingcommit:'/home/sally/svn-work/sandwich.txt'remainsinconflict
如果你遇到SVN冲突,三件事你可以选择:
“手动”合并冲突文本(检查和修改文件中的冲突标志)。
用某一个临时文件覆盖你的工作文件。
运行svnrevert<filename>来放弃所有的修改。
一旦你解决了冲突,你需要通过命令svnresolved让Subversion知道,这样就会删除三个临时文件,Subversion就不会认为这个文件是在冲突状态了。
[5]$svnresolvedsandwich.txt
Resolvedconflictedstateof'sandwich.txt'
手工合并SVN冲突
第一次尝试解决冲突让人感觉很害怕,但经过一点训练,它简单的像是骑着车子下坡。
这里一个简单的例子,由于不良的交流,你和同事Sally,同时编辑了sandwich.txt。Sally提交了修改,当你准备更新你的版本,冲突发生了,我们不得不去修改sandwich.txt来解决这个问题。首先,看一下这个文件:
$catsandwich.txt
Toppieceofbread
Mayonnaise
Lettuce
Tomato
Provolone
<<<<<<<.mine
Salami
Mortadella
Prosciutto
=======Sauerkraut
GrilledChicken
>>>>>>>.r2
CreoleMustard
Bottompieceofbread
小于号、等于号和大于号串是冲突标记,并不是冲突的数据,你一定要确定这些内容在下次提交之前得到删除,前两组标志中间的内容是你在SVN冲突区所做的修改:
<<<<<<<.mine
Salami
Mortadella
Prosciutto=======
后两组之间的是Sally提交的修改冲突:
=======Sauerkraut
GrilledChicken
>>>>>>>.r2
通常你并不希望只是删除SVN冲突标志和Sally的修改。
相关推荐
SVN解决冲突(合并别人的修改) 详细讲解了svn冲突合并的方法 非常适合初学者学习
怎样解决svn冲突呢,来看一下吧,不错的,好不容易搜到的...
SVN冲突解决方案.docx
SVN冲突处理解决方法 1.SVN冲突产生的原因 2. 解决冲突的方式 3.注意事项 不同版本的同一个位置出现了不同的东西
SVN版本冲突解决详解
EclipseSVN冲突详细解决方案.docx
项目开发代码管理,svn版本冲突解决,有效提高团队效率。
svn 解决冲突 confict svn 解决冲突 confict svn 解决冲突 confict
SVN怎么解决文件冲突conflict
svn版本冲突是怎么解决(最重要).txt
解决SVN冲突,带图解,大家一看就懂,很简单的,呵呵
主要解决svn冲突,也有其它的一些相关介绍。 为了方便大家,我的就少一点,一个就行了
平时我们说的冲突,是因为对同一文件的不同修改造成的冲突。树冲突,指的是由于目录(文件)树的改变,造成内容修改修改不能匹配在...本文介绍了重现 update 导致树冲突的重现过程,对SVN冲突解决机制进行实例探讨。
冲突的部分被你解决了,但是还没有将本地文件提交到svn里。所以,现在再点击文件右键—-update。没有错误了就再在文件上右键—–commit。这个后面的操作就不再赘述了。 5.现在才基本完成了冲突的修改并提交。 您
SVN分支合并到主干 分支 主干 合并 冲突 英文
Tortoise SVN 版本冲突处理介绍
svn的合并和冲突的解决一直以来困扰着很多人,该文档以图解的形式举例介绍svn的merge与冲突。
SVN基本使用及如何避免和解决冲突