如何解决“本地编辑,更新时传入删除”消息

Posted

技术标签:

【中文标题】如何解决“本地编辑,更新时传入删除”消息【英文标题】:How to resolve "local edit, incoming delete upon update" message 【发布时间】:2010-11-30 20:03:02 【问题描述】:

当我执行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 rm ...(应该改为svn update .)。

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

我找到了文档here,但不知道如何根据文档“合并”它。

如何摆脱它们?

我认为我的工作副本与存储库同步。不知道为什么这些消息显示。据我所知,这些文件应该被删除并被删除。我尝试了svn update .svn revert .,但当我执行svn status . 时仍然收到此消息。

【问题讨论】:

lesmana 的回答也适用于消息"local missing or deleted or moved away, incoming dir edit upon merge" 【参考方案1】:

短版:

$ 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 resolve不起作用,无论出于何种原因,您都可以执行以下操作:

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

$ 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

完成。

【讨论】:

这也适用于目录冲突。用 mkdir foomkdir bar 代替 touch foo bar。其他一切都一样。 你可以使用svn st | grep ! | cut -f 7 -d' ' | xargs touch作为一个衬垫来触摸所有丢失的文件 记住目录也可以rm -r foo bar(或者rmdir foo bar在Windows上或者如果你喜欢Windows)。 这个答案挽救了我的理智。谢谢。【参考方案2】:

尝试使用解决冲突

svn resolve --accept=working PATH

【讨论】:

谢谢。这似乎是正确的解决方案。 (以前不知道“解决”选项。我将其标记为答案。虽然,由于某种原因对我不起作用,可能是因为我的工作副本树已损坏或诸如此类......最后我解决了它只需删除目录并进行更新。 它最初对我不起作用,所以我在一个临时文件夹中检查了另一个 svn 分支的副本。然后我删除了导致冲突的 PATH 并提交了更改。之后我回到我的原始副本并运行这个命令。它与消息“已解决 PATH 的冲突状态”一起工作,谢谢 :) 我的理解是,如果原始文件被删除或不在存储库中,这无关紧要,因为“解决”仅适用于工作副本。【参考方案3】:

我刚遇到同样的问题,我发现了

$ 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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

您可以强制将本地目录恢复为 svn。

 svn revert -R your_local_path

【讨论】:

谢谢,还帮我解决了A + C path/to/dir> local dir edit, incoming dir delete or move upon update【参考方案6】:

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

【讨论】:

【参考方案7】:

当我们尝试合并来自错误目录的另一个分支更改时,通常会发生此问题。

例如:

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

首先如何避免这个问题:

Branch2$ svn merge -rStart:End Branch1
 ^^^^
Merging at root location

这个问题的最简单的解决方法对我有用:

svn revert -R .

【讨论】:

以上是关于如何解决“本地编辑,更新时传入删除”消息的主要内容,如果未能解决你的问题,请参考以下文章

如何解决几百万条的消息队列!

17如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万 消息持续积压几小时,说说怎么解决

未处理的承诺警告。如何解决?

解决合并冲突后如何使用默认的 git commit 消息?

如何解决错误消息“找不到模块‘缩写’

MQkafka——如何保证消息不丢失?如何解决?