SVN中冲突的解决

转载 2013年12月03日 09:19:15

本人使用SVN的时间不是很长,在使用之前也仅仅是粗浅的了解过这个软件。从今年的8月份开始,由于一个项目使用Eclipse 3.1,跨地域的开发,为了适应不同的开发人员处于不同的地理位置,因此我们使用SVN作为团队开发的管理工具。开始使用时,仅仅是边学边用,遇到不懂的地方再去查找资料。今天由于有点时间,先把合并过程遇到的冲突问题详细了解一下。

       可以使用svn status -u命令来查看一下某个问题是否会有冲突发生。在使用svn update 的时候,会出现如下一些信息:
$ svn update
U INSTALL
G README
C bar.c
Updated to revision 46.

那么,U 开头的信息提示你,这个文件在你本地没有修改过,文件已经根据版本库的新版本更新了。G 开头的信息提示你,这个文件在你本地已经修改过,但是和版本库中对应的版本并没有冲突的地方,svn已经合并更新了。而C 开头的信息提示你,这个文件有点麻烦,你在本地的修改和版本库中的版本修改的地方重叠了,也就是说,你修改了某一行,你的同事也修改了同一行。这个就需要你自己手工去解决了。当冲突发生时,要注意到有三件事情可以帮助你解决问题。
          a.Subversion会给这个文件作出c标记。
          b.如果Subversion认为这个文件时可以合并的,它会一个冲突标记(特殊的横线来分开冲突的代码块)
          c.对每一个冲突的文件,Subversion放置三个额外的未版本化文件到你的工作拷贝。

filename.mine
     你更新前的文件,没有冲突标志,只是你最新更改的内容。(如果这个文件不可以合并,.mine文件不会创建,因为它和工作文件相同。)

filename.rOLDREV
     这个是你做更新操作以前的BASE版本,就是你在上次更新之后未作更改的版本。

filename.rNEWREV
       这是Subversion从服务器刚刚收到的版本。这个版本就是版本库的HEAD版本。


例如,如果sally修改了一个文件sandwich.txt, 而harry也刚刚修改了这个文件的相同位置并提交到服务器。那么sally在做这个文件的update操作的时候会得到三个额外的文件sandwich.txt.mine、sandwich.txt.r1、sandwich.txt.r2。并且在提交的时候会遭到服务器的拒绝,因为这个文件的冲突问题还没有得到解决。要解决这个冲突,可以选择:
          a. 手工合并冲突文件(检查和修改文件中的冲突标志)。
          b.用一个临时文件(三个中的一个)覆盖你的工作文件。
          c.运行svn revert <filename>来放弃所有的修改。

一旦解决了你的冲突,需要通过命令svn resolved让subversion知道并删除三个临时文件。这时才可以提交。

下面再说说手工合并冲突。开始的时候让人觉得害怕,但做一段时间之后,就觉得不那么烦人了。

看看如下文本:
Mayonnaise
Lettuce
Tomato
Provolone
<<<<<<< .mine
Salami
Mortadella
Prosciutto
=======
Sauerkraut
Grilled Chicken
>>>>>>> .r2
Creole Mustard


一连串的大于、小于、等于号是冲突标记,这些数据得全部删除才可以提交。其中,
    <<<<<<< .mine
Salami
Mortadella
Prosciutto
=======
是你在冲突区里面做的修改。

Sauerkraut
Grilled Chicken
>>>>>>> .r2
是别人在冲突区做的修改。

在冲突区中,或许你需要和你的同事沟通来安排冲突区的文本内容,如果是程序代码,你需要和同事商量一下,中间的这段代码到底应该是什么样子的。

所有冲突区得到合理的解决之后,你就可以提交你的文件了。

文章来自[SVN中文技术网]转发请保留本站地址:http://www.svn8.com/SVNzixun/20080329/438.html

SVN解决冲突的几种情况

SVN是非常实用也好用的版本管理工具,但不是万能的,有时候还需要你手动解决。 一般在你准备提交一个新版本时,首先update一遍,有时候update完之后发现跟本地版本有冲突,这时候,在有冲突文件的...
  • tyxkzzf
  • tyxkzzf
  • 2014年12月01日 16:13
  • 12392

解决常见svn冲突问题

一个大项目在开发中可能会拆分成几个小项目,分别分去,同时共通的部分再由人做,做完后再统一合并。同时,在开发中,共通的部分修改后,其它人要保持同步。                 在这个开发过程...
  • gong_xucheng
  • gong_xucheng
  • 2015年08月03日 14:09
  • 34787

SVN版本冲突解决详解

版本冲突原因: 假设A、B两个用户都在版本号为100的时候,更新了kingtuns.txt这个文件,A用户在修改完成之后提交kingtuns.txt到服务器,这个时候提交成功,这个时候kingtun...
  • w1229748769
  • w1229748769
  • 2017年07月18日 00:51
  • 253

SVN冲突解决和注意事项

在我们用VS进行项目合作开发的过程中,SVN的提交控制是至关重要的,大家不可避免的都遇到过SVN冲突的问题,开发的时候,应该认真学习SVN的知识,减少冲突,集中时间放在开发上。     解决冲突有...
  • u013045552
  • u013045552
  • 2015年12月20日 21:56
  • 3886

Eclipse SVN冲突详细解决方案

大家一起开发,难免有时会同时修改同一个文件,这样就要学会解决冲突。当大家更新代码,发现以下情况的时候,就说明你的修改的文件和服务器的文件产生了冲突(一般是别人也改了同一个文件)。 1)和服务器有冲突...
  • nangongyanya
  • nangongyanya
  • 2014年03月25日 13:24
  • 17082

eclipse中svn冲突解决

最近在和同事做项目的时候出现了冲突,冲突解决方法是这样的:                右键项目 -> Team -> 与资源库同步                   ...
  • wangdan199112
  • wangdan199112
  • 2015年10月23日 11:03
  • 5234

SVN(TortoiseSVN)详细教程(三)--SVN更新及如何解决冲突文件

一. SVN更新(SVN Update)及如何解决冲突文件: 1. SVN update: 更新本地代码与SVN服务器上最新的版本一致,只要在需要更新的文件夹上点击右键或者在文件下空白处点击右键,选择...
  • u013354805
  • u013354805
  • 2015年09月16日 10:30
  • 12860

idea 中解决svn代码冲突

今天在使用idea的时候,提交svn代码的时候遇到一个问题,以前用惯了eclipse里面的代码冲突解决,用idea不习惯,下面截图看: 1.首先我用的是下面这个版本 2.现在changes里面...
  • wwwwww1wwwwww
  • wwwwww1wwwwww
  • 2015年03月17日 14:30
  • 11515

SVN系列(三)解决版本冲突的方法

一、产生冲突的原因: 根本原因就是两个用户都在使用同一个文件,其中一个对文件使用完成之后提交到服务器端,此时导致该文件的版本已经发生变化,而正在使用的用户仍然使用的是老版本的文件,当再次提交时导致版...
  • u010928470
  • u010928470
  • 2014年06月06日 09:26
  • 998

解决Eclipse SVN文件冲突详解

在使用Eclipse SVN插件进行团队开发的过程,假设开发人员A和B都获取了同一个文件的最新版本(假如版本号为8),并都对其进行了改动,成员A已经提交了自己所作的改动(版本号变为9),如果此时成员B...
  • u014236541
  • u014236541
  • 2017年01月13日 15:16
  • 6265
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SVN中冲突的解决
举报原因:
原因补充:

(最多只允许输入30个字)