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

时间:2014-02-05 09:12:28

标签: svn commit

我正在使用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

这似乎表明我需要同时提交前一个文件(已重命名)和新重命名的文件。如何提交不再存在的文件......?

11 个答案:

答案 0 :(得分:84)

提交目录,而不是文件。

将目录视为包含其包含的文件列表的文本文件,然后您可以看到要成功提交,您需要更新目录本身,以便它可以删除旧条目并添加新条目。这将在SVN中显示为删除旧文件并添加新文件(即对目录进行2次更改,而不是对文件进行1次更改)

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

答案 1 :(得分:12)

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

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

TortiseSVN(shell扩展)可以工作 - 它知道删除旧文件并添加新文件。

因此,如果您使用Windows,可以轻松解决此问题,即使用Explorer中的TortiseSVN对目录进行提交(删除旧文件名并添加新文件名)。

答案 2 :(得分:7)

添加一个具有旧名称的文件并执行提交,然后再次删除该文件执行提交。

答案 3 :(得分:6)

在使用subversion的eclipse中,我能够通过执行一个Team->在项目中足够高级别的文件夹中同步来解决这个令人困惑的错误,该文件夹包含新旧文件名和位置。如果您移动并重命名了文件,或者如果您无法弄清楚究竟发生了什么,那么在项目的最高层进行同步就不会有什么坏处。

当我这样做时,旧版本的重命名文件出现在同步视图中。一旦我使用"覆盖并提交"在他们身上,他们又消失了。此时,新的将最终正确提交。

答案 4 :(得分:1)

有可能重命名其中一个文件。

查看错误中的文件名,看看它是否与您的文件匹配。

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

答案 5 :(得分:1)

svn commit' R:\ myPath \ My-New-File-Name.cfm' ' R:\ mypath中\我的,老文件的Name.cfm' -m"消息"

适合我。您还需要包含已删除的文件。

答案 6 :(得分:0)

对于Visual Studio 2015,我绊倒了Ankh SVN的修复程序。在我的情况下,错误是由于在开发期间重命名“Form1.cs”(并且可能正在移动它)。这导致旧的和新的.resx文件出现问题。

  • 在解决方案资源管理器中突出显示项目以打开待处理更改视图窗口
  • 选择文件> Subversion>等待更改
  • 取消选中路径
  • 检查subversion需要的两个或多个文件。如果列表中没有“new”,则以非破坏性的方式更改其内容,以便它显示在列表中。
  • 运行提交。

希望这适合你。

答案 7 :(得分:0)

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

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

答案 8 :(得分:0)

sudo svn rm offendingfile --force

sudo svn commit -m''

完成

答案 9 :(得分:-1)

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

SVN擦除并替换:

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

答案 10 :(得分:-2)

TortiseSVN 在Windows资源管理器中打开该文件。 选择文件,右键单击,使用 TortiseSVN - > unversion并添加到忽略列表

然后文件将摆脱SVN,成为普通文件。 因此,您可以执行操作将文件添加到SVN,然后提交。

我使用解决方案来解决问题。