热度 1| |
所谓Tree Confict,就是至少有一个人修改了目录结构,包括文件或者文件所在目录的改名、删除、移动。
然后Update或Merge的时候就报了Tree Conflict。
介绍一下概念
Delete : 其中目录结构变化,都认为是Delete
Edit: 是指修改文件
Local : 是你本地修改
Incoming :是别人修改,你要Update或Merge进来。
这样应该有4个组合,但是Edit对Edit的组合应该是File Conflict,这个容易解决,不在Tree Conflict 讨论范围,所以有3种组合
再需要区别Update和Merge,就有了6种情况。分别是
我目前认为比较可行的方法,就是那个文件或文件夹一定会被标识成为TreeConflict,这时就用log查看谁修改了什么,最好和其他组员沟通一下,然后人工思考如何合并即可。掌握原理应该有助于分析,但是确实有点小乱,看我整理的下表:
另外Tortoise SVN会有一些辅助的菜单,(A为Incoming、B为Local)
对应1的 ( A修改文件内容,B修改文件名)
A 修改Foo.txt 并Commit
B 将Foo.txt 改名为 Bar.Txt, Update 将是下面的界面。注要用svn的Rename不是文件管理器下的重新命名
对应1的 (A修改文件内容,B删除文件)
A 修改Foo.txt 并Commit
B 将Foo.txt 使用SVN的 Delete
对应2的 ( A修改文件名,B修改文件内容)
A 将文件barbar.txt改名为barbarbar.txt,并且提交
B 修改barbar.txt 获取最新
其实对barbar.txt 修改已经在barbarbar.txt 中了。
对应2的(A将文件夹重命名,B修改文件内容)
A将yy文件夹重命名为ee,这时svn将yy和yy下面的文件删除。
B 修改barbar.txt 获取最新
(原文来至 http://www.cnblogs.com/gf7788/archive/2009/08/24/1552726.html)
//-----------增加内容----------
Unversion tree conflict :
>svn st
D C sys_test04
Local unversioned, Incoming add upon update
Solution:
>svn revert sys_test04
>svn up
Then sys_test04 will restored from svn server...