重命名文件,现在SVN不允许我提交?

我正在开发使用Aptana的ColdFusion网站。 我们使用SVN进行版本控制。

我重命名了几个文件,现在正在尝试提交其中的一个,但是我收到以下错误:

'SVN Commit' has encountered a problem. org.apache.subversion.javahl.ClientException: Illegal target for the requested operation svn: Commit failed (details follow): svn: Cannot commit 'R:\myPath\My-New-File-Name.cfm' because it was moved from 'R:\myPath\My-Old-File-Name.cfm' which is not part of the commit; both sides of the move must be committed together 

这似乎表明我需要同时提交以前的文件(已重命名)和新的重命名文件。 我怎样才能提交一个不再存在的文件…?

提交目录,而不是文件。

把一个目录想象成一个包含它所包含的文件列表的文本文件,然后你可以看到要成功提交,你需要更新目录本身,这样它可以删除旧的条目并添加新的条目。 这将在SVN中显示为删除旧的和添加新的文件(即2更改到目录,而不是1更改为文件)

如果只想提交1个文件,则需要暂时​​将其他更改的文件添加到忽略列表中。

各种客户似乎比其他人更好地处理这个问题。

AnkhSVN Visual Studio遇到此错误,无法处理它。

TortiseSVN(shell扩展)虽然工作 – 它知道删除旧文件,并添加新的。

所以,如果你在Windows上,一个简单的方法来解决这个问题,就是使用Explorer的TortiseSVN在目录上执行一个提交(删除旧的文件名并添加新的文件名)。

在eclipse中使用subversion时,我可以通过在项目中足够高的文件夹进行Team-> synchronize来解决这个混乱的错误,它包含了新旧文件名和位置。 如果您移动并重命名了文件,或者如果您无法弄清楚究竟发生了什么,那么在您的项目最顶层进行同步不会有什么坏处。

当我这样做时,旧版本的重命名文件出现在同步视图中。 一旦我使用“覆盖并提交”他们,他们再次消失。 在这一点上,新的将最终承诺妥善。

添加一个旧名称的文件并提交,然后再次删除文件做提交。

有一个机会,其中一个文件被重命名。

看看错误中的文件名,看看是否与你的文件相匹配。

如果文件名不匹配,请将文件重命名为错误文件,并提交所有要提交的文件。 在此之后,您可以重命名您的文件并再次提交。

如果事情真的搞砸了,最简单的解决方法是从存储库中删除文件夹,然后将其添加回当前的forms。

SVN擦除和replace:

  1. 将包含所有更改的文件夹复制到临时位置。
  2. 在文件夹上使用SVN删除,然后提交。
  3. 将备份副本复制回您的工作副本并提交。

TortiseSVN在Windows资源pipe理器中打开文件。 select文件,右键单击,使用TortiseSVN – > unversion 并添加忽略列表

那么文件将摆脱SVN,成为正常的文件。 从而可以将文件添加到SVN中进行提交。

我使用解决scheme来解决问题。

对于Visual Studio 2015,我绊倒了Ankh SVN的修复。 在我的情况下,错误是在开发过程中重命名“Form1.cs”(也许是移动它)的结果。 这导致旧的和新的.resx文件的问题。

  • 在“解决scheme资源pipe理器”中突出显示项目以打开待定更改视图窗口
  • select“文件”>“Subversion”>“待定更改”
  • 取消path
  • 检查颠覆所需的两个或更多文件。 如果“新”不在列表中,则以非破坏性的方式更改其内容,使其出现在列表中。
  • 运行提交。

希望这对你有用。

svn commit'R:\ myPath \ My-New-File-Name.cfm'R:\ myPath \ My-Old-File-Name.cfm'-m“message”

为我工作。 您还需要包含已删除的文件。

如果您使用的是IntelliJ IDEA并使用TortoiseSVN进行提交,有时会发生该文件夹未被IDEA删除,并且Subversion发生此错误。

在这种情况下,这意味着“请不要提交标记为已删除的文件夹/文件”