svn tree confflect

Posted 10年 Java程序员,硬核人生!勇往直前,永不退缩!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了svn tree confflect相关的知识,希望对你有一定的参考价值。

 

 

 

 

 

同事提交了一些文件,我尝试更新那个目录, 却总是无法更新到他的提交, 一直都是工作空间的内容。而且资源管理器的目录图标显示, 出现变动(就是右上角有个红色的那种)。

 

难道同事没有提交成功吗? 检查svn log, 发现他确实是成功提交了的。。那就奇怪了! 

 

我把那个目录备份,然后全部删除,再更新,还是有问题,我注意到里面内容 是自己的之前的那个提交的版本(不是svn log中能够查看到的版本。是我在IDEA move 后的版本。)。 

 

 

 

 

搞了很久,搞不清怎么回事。管他三七二十一,尝试提交吧。 却总是提示 svn tree confflect 。。。 让同事备份了他的修改,然后我尝试删除,也无法删除。 clean up 了整个项目, 还是一样。

 

郁闷了, 我偶然看到了revert, 试了下, 却没报错, 然后update更新目录, 终于得到了 同事的最新提交!!

 

哦, 这什么情况? 我猜是 我在IDEA的操作引起的。 我在IDEA move 一个新文件(有一些和同事提交的文件重名。)进入那个目录后,其实哪些文件就已经  被add to svn 了, 也就是 加入了 svn 的tree。 虽然没有commit, 但是 它在我本地的svn 是有记录的, 影响到了 svn tree。 故 当同事提交了同名文件,然后我更新那个目录的时候, 就出现了tree conflict。。

 

 ---------------------------------------------------------------------------------------------------------------------------------------------------------

补充:

 出现tree 冲突:

 右键Edit conflicts:

出现:

其实 最上面的一行已经说明了 原因了, 出现这种情况就是因为, 我本地修改了某文件,但是没有提交,后面我更新了这个类,但是这个时候他已经被其他同事删除(而且提交)了。

 

怎么解决呢? 其实svn提供的选择不多, 一个是 Accept, 也就是 mark as resolved  但是接受当前工作空间拷贝的状态;  另外就是Resolve later,其实就是不解决,稍后处理。

(我发现Accept 之后, 文件的状态还是 Tree conflict, 但是右键直接“mark as resolved” 之后,状态变为 Resolved, 两者应该还是有区别; 还是不太懂 Accept 操作的真正含义)

之后再看这两个文件呢, 发现多了 + 的 图标,应该是状态变成了add,但是未提交:

 如果右键 svn commit,则出现:

 

可见这两个文件已经不存在于 svn 远程仓库,但是本地依然被保留, 本地svn 是可感知的,是已经被add 追踪了的。

 

怎么解决呢? 很简单,直接删除吧。。

 再次执行svn  commit, 发现还是有的:

但是直接提交的话, 会提示 文件不存在: “ not added to the svn ... ”   这个有点奇怪,貌似本地已经added了,但是由于miss, 所以又是无法正常提交到远程, 我决定可以不用理会吧。。

 

 

 

参考:

https://stackoverflow.com/questions/738367/why-am-i-getting-tree-conflicts-in-subversion

以上是关于svn tree confflect的主要内容,如果未能解决你的问题,请参考以下文章

svn搭建

将目录中的所有文件添加到svn命令行

SVN 向 GIT 进行转换如何拉取所有提交记录

SVN 向 GIT 进行转换如何拉取所有提交记录

Linux使用svn在github上下载部分文件(单个文件夹)

用SVN在github下下载一个文件夹到本地