SVN Tree Conflict 的分析

转自:http://www.eetop.cn/blog/html/12/1006712-32105.html 


所谓Tree Confict,就是至少有一个人修改了目录结构,包括文件或者文件所在目录的改名、删除、移动。

然后Update或Merge的时候就报了Tree Conflict。

 

介绍一下概念

Delete : 其中目录结构变化,都认为是Delete

Edit: 是指修改文件

Local : 是你本地修改

Incoming :是别人修改,你要Update或Merge进来。

这样应该有4个组合,但是Edit对Edit的组合应该是File Conflict,这个容易解决,不在Tree Conflic 讨论范围,所以有3种组合

再需要区别Update和Merge,就有了6种情况。分别是

Local delete, incoming edit upon update
Local edit, incoming delete upon update
Local delete, incoming delete upon update
Local missing, incoming edit upon merge
Local edit, incoming delete upon merge
Local delete, incoming delete upon merge

 

我目前认为比较可行的方法,就是那个文件或文件夹一定会被标识成为TreeConflict,这时就用log查看谁修改了什么,最好和其他组员沟通一下,然后人工思考如何合并即可。掌握原理应该有助于分析,但是确实有点小乱,看我整理的下表:

image

image

 

另外Tortoise SVN会有一些辅助的菜单,(A为Incoming、B为Local)

对应1的 ( A修改文件内容,B修改文件名)

A 修改Foo.txt 并Commit

B 将Foo.txt 改名为 Bar.Txt, Update 将是下面的界面。注要用svn的Rename不是文件管理器下的重新命名

clip_image002

 

对应1的 (A修改文件内容,B删除文件)

A 修改Foo.txt 并Commit

B 将Foo.txt 使用SVN的 Delete

clip_image002[5]

 

对应2的 ( A修改文件名,B修改文件内容)

A 将文件barbar.txt改名为barbarbar.txt,并且提交

B 修改barbar.txt 获取最新

clip_image002[13]

其实对barbar.txt 修改已经在barbarbar.txt 中了。

clip_image002[9]

 

对应2的(A将文件夹重命名,B修改文件内容)

A将yy文件夹重命名为ee,这时svn将yy和yy下面的文件删除。

B 修改barbar.txt 获取最新

 clip_image002[11]

(原文来至 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...


  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值