Svn 如何解决;本地编辑,更新时输入删除;消息

Svn 如何解决;本地编辑,更新时输入删除;消息,svn,Svn,当我执行svn状态时。,我得到以下信息: ! 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

当我执行
svn状态时。
,我得到以下信息:

!     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 rm…
错误的事后处理(应该做
svn更新。

现在,当我执行svn status.时,我会收到这些树冲突消息

我找到了文档,但不确定如何根据文档“合并”它

如何摆脱它们


我认为我的工作副本与存储库同步。不知道为什么这些信息会显示出来。据我所知,这些文件应该被删除,并被删除。我尝试了
svn更新。
svn恢复。
但当我执行
svn状态时,仍然会收到此消息。

尝试使用

svn resolve --accept=working PATH
简短版本:

$ 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
如果冲突是关于目录而不是文件,则用
mkdir
替换
touch
,用
rm-r
替换
rm


注:同样的程序也适用于以下情况:

$ svn st
!     C foo
      >   local delete, incoming delete upon update
!     C bar
      >   local delete, incoming delete upon update

长版本:

当您编辑一个文件,而其他人删除了该文件并首先提交时,就会发生这种情况。作为一个好的svn公民,您在提交之前进行更新。现在你有了冲突。意识到删除文件是正确的做法,您可以从工作副本中删除该文件。svn现在不再是内容,而是抱怨本地文件丢失,并且存在冲突更新,最终希望看到文件被删除。干得好,svn

如果
svn resolve
无效,无论出于何种原因,您都可以执行以下操作:

初始情况:本地文件丢失,更新冲突

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update
$ svn st
A  +  C foo
      >   local edit, incoming delete upon update
A  +  C bar
      >   local edit, incoming delete upon update
$ svn st
?       foo
?       bar
重新创建冲突文件:

$ touch foo bar
如果冲突是关于目录的,则用
mkdir
替换
touch

新情况:要添加到存储库的本地文件(没错,svn,不管你怎么说),更新仍然冲突

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update
$ svn st
A  +  C foo
      >   local edit, incoming delete upon update
A  +  C bar
      >   local edit, incoming delete upon update
$ svn st
?       foo
?       bar
将文件恢复为svn喜欢的状态(即已删除):

新情况:svn不知道本地文件,更新不再冲突

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update
$ svn st
A  +  C foo
      >   local edit, incoming delete upon update
A  +  C bar
      >   local edit, incoming delete upon update
$ svn st
?       foo
?       bar
现在我们可以删除这些文件:

$ rm foo bar
如果冲突是关于目录的,则将
rm
替换为
rm-r

svn不再抱怨:

$ svn st

完成。

如果您没有在冲突目录中进行任何更改,您也可以在这里进行
rm-rf冲突\u/
,然后进行
svn up
。这至少对我有效。

我刚收到同样的问题,我发现

$ svn revert foo bar
解决了这个问题

svn resolve不适用于我:

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

$ svn resolve --accept working
svn: Try 'svn help' for more info
svn: Not enough arguments provided

$ svn resolve --accept working .

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

$ svn resolve --accept working foo
Resolved conflicted state of 'foo'

$ svn st
!  +    foo
!  +  C bar
      >   local edit, incoming delete upon update

因此,您可以恢复已删除的文件,但请记住,如果您正在使用设置的项目文件(如iOS)处理任何类型的项目,则恢复该文件会将其添加到系统文件夹结构中,但不会添加到项目文件结构中。如果您在这种情况下需要执行其他步骤

您可以强制将本地目录还原为svn

 svn revert -R your_local_path

当我们试图合并来自错误目录的其他分支更改时,经常会发生此问题

例:

执行时引发的冲突是:

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\u SubDir
Branch1\u其他SubDir
相关的更改,并且在
Branch1\u SubDir
中找不到这些文件夹(显然目录不能在其内部)

如何首先避免这个问题:

Branch2$ svn merge -rStart:End Branch1
 ^^^^
Merging at root location
最简单的解决方案对我有效:

svn revert -R .

谢谢这似乎是正确的解决办法。(不知道“决心”之前的选项。我将其标记为“答案”。不过,由于某种原因,我的工作副本树不起作用,可能是因为我的工作副本树已损坏或诸如此类……最后,我通过删除目录并进行更新来解决它。它最初对我不起作用,因此我在临时文件夹中签出了svn分支的另一个副本。然后,我删除了路径c原因是冲突并提交了更改。之后,我返回到原始副本并运行此命令。它与消息“Resolved conflicted state of PATH”一起工作。此消息有效,谢谢:)我的理解是,如果原始副本被删除或不在存储库中,则无所谓,因为“resolve”仅对工作副本有效。当目录发生冲突时,此操作也有效。用mkdir-foo和mkdir-bar代替触摸foo-bar。其他一切都一样。您可以使用
svn st|grep!|剪切-f 7-d''| xargs touch
作为一个用于触摸所有缺少的文件的行线记住,对于目录也会执行
rm-r foo bar
(或者
rmdir foo bar
在Windows上或如果您喜欢Windows)。这个答案保存了我的理智。谢谢。lesmana的回答也适用于消息“本地丢失或删除或移动,合并时传入目录编辑”谢谢,还帮助我解决了
A+C路径/to/dir
>本地目录编辑、传入目录删除或更新时移动问题