Subversion树冲突
树冲突场景
- 同一条分支,有2个Dev在同时编辑一个文件,两人没沟通好:
- 其中一Dev A把一个文件移到另外一个目录或者重命名了,并且已经提交;
- 另一Dev B也同时在修改这个文件内容,并不知道A已经将该文件转移或重命名;
- 冲突出现:当Dev B想提交代码到分支时,会出现不让提交情况。
场景实例
- 初始分支:
61536fangchen2月1319:32htdocs/
61536fangchen592月1319:32htdocs/changeLog.txt
- Dev A的改动,且提交:
Ahtdocs/changlog.txt
D htdocs/changeLog.txt- Dev B的改动:
- 此时Dev B想提交代码,报错:
Sendinghtdocs/changeLog.txt
svn:E155011:Commitfailed(detailsfollow):
svn:E155011:File'/home/xfc/works/myDemo/htdocs/changeLog.txt'isoutofdate
svn: E160013: File not found: transaction '61545-1cqn', path '/misc/avatar/branches/boringkiller/htdocs/changeLog.txt'- svn up后:
Updating'.':
Chtdocs/changeLog.txt
Ahtdocs/changlog.txt
Atrevision61545.
Summaryofconflicts:
Tree conflicts: 1解决办法
- 一方案(以Dev A的版本为准,把Dev B自己的改动合并到Dev A的改动上)
第一步
Index:htdocs/changeLog.txt
===================================================================
---htdocs/changeLog.txt(workingcopy)
+++htdocs/changeLog.txt(workingcopy)
@@-2,3+2,5@@
@Authorxfc
TreeConflictDemo.
+
+I'm editing this file.第二步
第三步,编辑replace文件,替换 “changeLog.txt”为“changelog.txt”
第四步
现在的状态:
Mhtdocs/changlog.txt
A+Chtdocs/changeLog.txt
>localedit,incomingdeleteuponupdate
Summaryofconflicts:
Treeconflicts:1
第五步,删除冲突文件
最后:
二方案(以Dev B的版本为准,把Dev A对文件的重命名无效)
第一步,删除A的改动:
第二步,接受本地working的改动
看本地改动是否生效:
Index:htdocs/changlog.txt
===================================================================
---htdocs/changlog.txt(revision61559)
+++htdocs/changlog.txt(workingcopy)
@@-1,5+0,0@@
-BoringKillerChangeLog:
-@Authorxfc
-
-TreeConflictDemo.
-
Index:htdocs/changeLog.txt
===================================================================
---htdocs/changeLog.txt(workingcopy)
+++htdocs/changeLog.txt(workingcopy)
@@-3,3+3,4@@
TreeConflictDemo.
+I'm editing my file.完毕,ci了~
参考资料
总结:
使用到的svn一些没接触过的命令
- svn patch
- svn del --force filepath
- svn resolve --accept=working filepath