Subversion树冲突

树冲突场景

  • 同一条分支,有2个Dev在同时编辑一个文件,两人没沟通好:
  1. 其中一Dev A把一个文件移到另外一个目录或者重命名了,并且已经提交;
  2. 另一Dev B也同时在修改这个文件内容,并不知道A已经将该文件转移或重命名;
  3. 冲突出现:当Dev B想提交代码到分支时,会出现不让提交情况。

场景实例

  • 初始分支:
 xfc 写道
$ svn list -Rv http://xxx.com/branches/boringkiller
  61536 fangchen 2月 13 19:32 htdocs/
  61536 fangchen 59 2月 13 19:32 htdocs/changeLog.txt
  •  Dev A的改动,且提交:
xfc 写道
$ svn st
A htdocs/changlog.txt
D htdocs/changeLog.txt
  •  Dev B的改动:
xfc 写道
$ svn st
M htdocs/changeLog.txt
  •  此时Dev B想提交代码,报错:
xfc 写道
$ svn ci -m"xfc ci"
Sending htdocs/changeLog.txt
svn: E155011: Commit failed (details follow):
svn: E155011: File '/home/xfc/works/myDemo/htdocs/changeLog.txt' is out of date
svn: E160013: File not found: transaction '61545-1cqn', path '/misc/avatar/branches/boringkiller/htdocs/changeLog.txt'
  •  svn up后:
xfc 写道
$ svn up
Updating '.':
      C htdocs/changeLog.txt
A htdocs/changlog.txt

At revision 61545.
Summary of conflicts:
Tree conflicts: 1

解决办法

  • 一方案(以Dev A的版本为准,把Dev B自己的改动合并到Dev A的改动上)

第一步

 写道
$ svn diff htdocs/changeLog.txt
Index: htdocs/changeLog.txt
===================================================================
--- htdocs/changeLog.txt (working copy)
+++ htdocs/changeLog.txt (working copy)
@@ -2,3 +2,5 @@
@Author xfc

Tree Conflict Demo.
+
+I'm editing this file.

第二步

 写道
$ svn diff htdocs/changeLog.txt > replace

第三步,编辑replace文件,替换 “changeLog.txt”为“changelog.txt”

第四步

xfc 写道
$ svn patch replace
    U htdocs/changlog.txt

现在的状态:

 写道
$ svn st
M htdocs/changlog.txt
A + C htdocs/changeLog.txt
> local edit, incoming delete upon update

Summary of conflicts:
Tree conflicts: 1

第五步,删除冲突文件

xfc 写道
svn del --force htdocs/changeLog.txt
    D htdocs/changeLog.txt

 最后:

 写道
$ svn st
    M htdocs/changlog.txt


二方案(以Dev B的版本为准,把Dev A对文件的重命名无效)

第一步,删除A的改动:

xfc 写道
$ svn del --force htdocs/changlog.txt
    D htdocs/changlog.txt

 第二步,接受本地working的改动

xfc 写道
svn resolve --accept=working htdocs/changeLog.txt
    Resolved conflicted state of 'htdocs/changeLog.txt'

 看本地改动是否生效:

xfc 写道
svn diff
Index: htdocs/changlog.txt
===================================================================
--- htdocs/changlog.txt (revision 61559)
+++ htdocs/changlog.txt (working copy)
@@ -1,5 +0,0 @@
-Boring Killer Change Log:
-@Author xfc
-
-Tree Conflict Demo.
-
Index: htdocs/changeLog.txt
===================================================================
--- htdocs/changeLog.txt (working copy)
+++ htdocs/changeLog.txt (working copy)
@@ -3,3 +3,4 @@

Tree Conflict Demo.

+I'm editing my file.

 完毕,ci了~

参考资料

  总结:

    使用到的svn一些没接触过的命令

  • svn patch 
  • svn del --force filepath
  • svn resolve --accept=working filepath

猜你喜欢

转载自simple56.iteye.com/blog/1404837