svn错误:已存在同名的版本化目录

时间:2010-06-21 11:17:48

标签: svn windows-7 tortoisesvn

我正在尝试将本地文件夹从Branch切换到Trunk。我收到以下错误。

Failed to add directory 'Drive:\Path\To\The\Directory'
a versioned directory of the same name already exists

这是什么决议?

5 个答案:

答案 0 :(得分:10)

如果您在分支机构上创建了一个目录(即使我认为您还没有在其中检查过),您经常会看到这个,但同时有人也创建了一个同名的目录。树干。因此,当你从分支切换到主干时,它试图检查主干的目录版本,但它不能,因为它已经存在,所以它不想丢弃你的版本。

编辑:

解决此问题的最佳方法是在工作副本中重命名此目录,然后进行更新。更新后,您可以决定是否需要将内容复制到新创建的目录中。

EDIT2:

SVN没有一种很好的方法可以自动解决这个问题。听起来你已经在工作副本中创建了这个文件夹(当前在分支上检出),而其他人在主干上创建了这个名字的文件夹。当你切换它时试图创建新目录,但它不能,因为你已经有了。我认为 only 处理这个问题的方法是临时重命名目录,然后切换然后比较两个目录的内容,看看是否有额外的文件需要添加或合并。

答案 1 :(得分:3)

我怀疑\ Path \ To \ The \目录在分支中不存在,但确实存在于主干中。新增加到后备箱可能吗?当你切换时,SVN认为它应该将它添加到你的本地目录,因为它不是(应该是)你正在切换的分支。但无论如何它就在那里。这可能是先前没有正确结账的开关的结果。即你之前做过这个开关,然后当你从后备箱切换回分支时,你没有清理过这个问题。所以现在剩下的目录就存在了,它不希望看到它。

答案 2 :(得分:2)

当前分支中可能不存在Path/To/The/Directory,但它确实存在于主干中?

可能存在问题的另一个问题是当SVN服务器运行区分大小写的操作系统(例如* nix)时,您正在使用Windows。在这种情况下,SVN服务器将考虑:

Path/To/The/Directory
Path/To/The/directory

作为两个不同的目录。当有人对目录名称进行大小写更改时,通常会发生这种情况。

答案 3 :(得分:2)

一个简单的解决方案是将svn switch--force标记一起使用。

例如,当我切换回主干时,我在切换到分支后看到了错误。这解决了我的问题:

svn switch --force ^/trunk

答案 4 :(得分:0)

要在保留目录的同时解决此错误,我发现以下技术有效:

  • SVN将目录切换到存储库中的正确路径(如果它没有指向那里)。
  • 将目录中的.svn隐藏文件夹移动到某个安全位置(桌面)。
  • SVN清理并更新父目录。 更新可能会在某些子目录中导致相同的错误。忽略这一点。
  • 将在目录中创建一个新的.svn隐藏文件夹。将原始.svn隐藏文件夹移回目录中,覆盖新.svn文件夹的现有内容。 我不记得是否因为某些错误或预感而这样做了......无论如何它似乎都是这样做的。
  • SVN再次更新目录。
  • 瞧!

请注意,在一个系统上至少有一次,这个技巧导致所有子目录/文件显示?从子目录中删除.svn文件夹并再次清理/更新父文件就可以了。

不确定这是什么伏都教,但事后我提交了更改并更新了各种系统,他们看起来都很开心。

仅供参考我由于异常情况而进入这个状态:

/ foo是一个svn:/ newfoo / bar的外部,这个安排需要撤消,所以/ newfoo / bar被移动并重命名为/ foo。

  • 我删除了/指向/ foo并提交的svn:external属性。
  • 我使用TortoiseSVN的存储库浏览器首先将/ newfoo / bar移动到/ bar,然后将/ bar重命名为/ foo。
  • 我的本地副本上的SVN更新首先导致/ foo存在(或某些)时/ foo指向/ newfoo / bar的错误消息。
  • 我SVN切换/ foo到新路径/ foo
  • 现在,SVN更新导致“同名的版本化目录已存在”错误。