我正在尝试将本地文件夹从Branch切换到Trunk。我收到以下错误。
Failed to add directory 'Drive:\Path\To\The\Directory'
a versioned directory of the same name already exists
这是什么决议?
答案 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文件夹并再次清理/更新父文件就可以了。
不确定这是什么伏都教,但事后我提交了更改并更新了各种系统,他们看起来都很开心。
仅供参考我由于异常情况而进入这个状态:
/ foo是一个svn:/ newfoo / bar的外部,这个安排需要撤消,所以/ newfoo / bar被移动并重命名为/ foo。