当我做svn status .,我得到这个:
! C auto-complete-config.elc
> local edit, incoming delete upon update
! + C auto-complete.elc
> local edit, incoming delete upon update
! + C popup.elc
> local edit, incoming delete upon update
! + C fuzzy.elc
> local edit, incoming delete upon update
基本上,这些文件不应该在存储库中。一个开发人员已经删除了它们。然后,我想我做了一个svn…事后误操作(应该做SVN更新的。相反)。
现在,当我执行svn status .时,我得到这些树冲突消息。
我在这里找到了文档,但不确定如何根据文档“合并”它。
如何摆脱它们?
我认为我的工作副本与存储库是同步的。不知道为什么这些信息显示。据我所知,这些文件应该被删除。我尝试了svn update。和SVN还原。但我仍然得到这条消息时,我做svn状态..
短版:
$ svn st
! + C foo
> local edit, incoming delete upon update
! + C bar
> local edit, incoming delete upon update
$ touch foo bar
$ svn revert foo bar
$ rm foo bar
如果冲突是关于目录而不是文件,那么将touch替换为mkdir,将rm替换为rm -r。
注:同样的程序也适用于以下情况:
$ svn st
! C foo
> local delete, incoming delete upon update
! C bar
> local delete, incoming delete upon update
长版:
当你编辑一个文件,而其他人先删除该文件并提交时,就会发生这种情况。作为一个好的svn公民,你在提交前会做一个更新。现在你有冲突了。意识到删除文件是正确的事情,你从你的工作副本删除文件。svn现在抱怨本地文件丢失,并且有一个冲突的更新,最终希望看到文件被删除。干得好,svn。
如果svn解决不了,无论出于什么原因,都可以采取以下措施:
初始情况:本地文件丢失,更新冲突。
$ svn st
! + C foo
> local edit, incoming delete upon update
! + C bar
> local edit, incoming delete upon update
重新创建冲突文件:
$ touch foo bar
如果冲突是关于目录的,那么将touch替换为mkdir。
新情况:本地文件被添加到存储库(是的,svn,不管你说什么),更新仍然冲突。
$ svn st
A + C foo
> local edit, incoming delete upon update
A + C bar
> local edit, incoming delete upon update
将文件恢复到svn喜欢的状态(即删除):
$ svn revert foo bar
新情况:svn不知道本地文件,更新不再冲突。
$ svn st
? foo
? bar
现在我们可以删除文件:
$ rm foo bar
如果是目录冲突,则将rm替换为rm -r。
SVN不再抱怨:
$ svn st
完成了。
当我们尝试合并来自错误目录的另一个分支更改时,经常会发生此问题。
Ex:
Branch2\Branch1_SubDir$ svn merge -rStart:End Branch1
^^^^^^^^^^^^
Merging at wrong location
在执行时抛出的冲突是:
Tree conflict on 'Branch1_SubDir'
> local missing or deleted or moved away, incoming dir edit upon merge
当你选择q退出分辨率时,你得到的状态为:
M .
! C Branch1_SubDir
> local missing or deleted or moved away, incoming dir edit upon merge
! C Branch1_AnotherSubDir
> local missing or deleted or moved away, incoming dir edit upon merge
这显然意味着合并包含与Branch1_SubDir和Branch1_AnotherSubDir相关的更改,并且这些文件夹不能在Branch1_SubDir中找到(显然目录不能在自身内部)。
首先如何避免这个问题:
Branch2$ svn merge -rStart:End Branch1
^^^^
Merging at root location
对我来说最简单的解决方法就是:
svn revert -R .