SVN文件冲突解决方法

转载 2013年12月03日 17:40:49

原文:  http://blog.sina.com.cn/s/blog_6dc4dbed01018jlo.html

 

SVN是很好的开源软件,普及度很广,但是使用中最头疼的无异于冲突问题与处理。下面来对这些头疼问题一一作出解答。包含三个系列,冲突简介、文件冲突与解决实例、树冲突与解决实例。

  多人并行开发操作svn时,经常会遇到各种冲突,包括文件冲突(text conflict)与树冲突(tree conflict)。
  文件冲突:多人同时修改同一文件相同位置为不同内容时,会造成文件冲突。解决方式有两种,svn update与手动解决。
  树冲突:
当一名开发人员移动、重命名、删除一个文件或文件夹,而另一名开发人员也对它们进行了移动、重命名、删除或者仅仅是修改时就会发生树冲突。

svn status — 打印工作拷贝文件和目录的状态。
详情请参考svn status命令详述

 

 

 

文件冲突:多人同时修改同一文件的相同位置时,可能会造成文件冲突。解决方式有两种,svn update与手动解决。

一、文件冲突解决方式

1. 利用update自动解决冲突,即不管当前工作副本内容是否是最新版本,都使用--accept参数作为冲突处理方式。所有参数含义解释如下:

--accept ARG : specify automatic conflict resolution action

('postpone', 'base', 'mine-conflict',

'theirs-conflict', 'mine-full', 'theirs-full',

's')

(p) postpone - mark the conflict to be resolved later //让文件在更新完成之后保持冲突状态。

(df) diff-full - show all changes made to merged file //使用标准区别格式显示base修订版本和冲突文件本身的区别。

(e) edit - change merged file in an editor //用你喜欢的编辑器打开冲突的文件,编辑器是环境变量EDITOR设置的。

(r) resolved - accept merged version of file //完成文件编辑之后,通知svn你已经解决了文件的冲突,它必须接受当前的内容—从本质上讲就是你已经“解决了”冲突。

(mf) mine-full - accept my version of entire file (ignore their change//丢弃新从服务器接收的变更,并只使用你查看文件的本地修改。

(tf) theirs-full - accept their version of entire file (lose my changes)//丢弃你对查看文件的本地修改,只使用从服务器新接收的变更。

(s) show all options 显示所有选项

2. update时不解决冲突,利用svn resolve解决冲突,两种方式

1) 利用svn resolve --accept base选择base版本,即a.txt.rOld作为最后提交的版本

--accept ARG : specify automatic conflict resolution source

('base', 'working', 'mine-conflict',

'theirs-conflict', 'mine-full', 'theirs-full')

2) 手工修改本地文件,然后将当前拷贝如test.txt作为最后提交的版本

svn resolve --accept working test.txt

svn resolve --accept theirs-full test.txt 使用test.txt.rNew作为最后提交的版本

svn resolve --accept mine-full test.txt 使用test.txt.mine作为最后提交的版本

svn resolve --accept mine-conflict test.txt 使用test.txt.mine的冲突部分作为最后提交的版本

svn resolve --accept theirs-conflict test.txt 使用test.txt.rNew的冲突部分作为最后提交的版本

二、冲突实例

A与B同时修改test.txt文本中同一行内容,但是A先提交。B在提交前进行更新,会出现冲突提示,选项、出现冲突的文件。最后文件冲突标识text conflict,如图所示:

如果选项选择P,则本地工作副本会产生3个临时文件,test.txt.mine test.txt.r1(Old版本)test.txt.r2(rNew版本)。其中r(Old)版本是base版本,r(New)是最新版本,r(mine)是B本地修改的版本。打开test.txt版本,会看到冲突文件的标识。<<<<<<< .mine与=======之间表示B修改后的内容,=======与>>>>>>> .r2之间是服务器上的版本。

如果手动解决该冲突文件,然后使用修改完毕的文件提交时,可以这样做,修改test.txt文件后,删除那些冲突标识<<<<<<< .mine、=======、=======与>>>>>>> .r2后,执行svn resolve --accept working test.txt后,最后ci提交。

相关文章推荐

SVN解决冲突的几种情况

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

解决常见svn冲突问题

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

svn 冲突解决

2、解决冲突 第一种,利用update的选项进行冲突解决,也就是说不管当前拷贝副本是否是最新版本,都使用—accept参数作为冲突处理方式   --accept ARG          ...

svn提交冲突

svn冲突如下 Conflict discovered in ‘**/SYHelper_CheckVersion.swift’. Select: (p) postpone, (df) dif...

SVN提交版本冲突

Illegal target for the requested operation svn: Commit failed (details follow): svn: Entry for 'D:...

SVN版本冲突解决详解

 版本冲突原因:假设A、B两个用户都在版本号为100的时候,更新了kingtuns.txt这个文件,A用户在修改完成之后提交kingtuns.txt到服务器,这个时候提交成功,这个时候kingtuns...

SVN文件冲突解决

在华为做外包,之前一直用的clearcase版本管理,比较好用,不会出现一份文件几个人同事修改。现在的项目用开源框架,用SVN来版本管理。经常出现文件冲突的情况。现整理如下:   一:先把冲突文件备...
  • emoven
  • emoven
  • 2013年10月10日 13:04
  • 1523

svn文件冲突,树冲突详解

http://apps.hi.baidu.com/share/detail/2530590     解决冲突 偶尔,当你从版本库更新、合并文件时,或者切换工作副...
  • sqk1988
  • sqk1988
  • 2011年11月01日 23:29
  • 16615

【SVN】提交文件时提示文件冲突怎么办?

1. 如果执行svn commit命令时遇到了"xxx is out of date"提示,如下图所示:   那么一般是因为您修改了本地某文件或目录结构,而别人也修改了同一个的文件或目录并且先于您...

SVN文件版本冲突解决方法

版本冲突原因: 假设A、B两个用户都在版本号为100的时候,更新了kingtuns.txt这个文件,A用户在修改完成之后提交kingtuns.txt到服务器,这个时候提交成功,这个时候kingtun...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SVN文件冲突解决方法
举报原因:
原因补充:

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