如果.svn文件夹已损坏,如何恢复svn控件?

时间:2008-09-18 20:02:17

标签: svn

我有几个大的结帐,其中.svn文件夹已损坏所以我得到并且错误,“清理无法处理以下路径..”而且我不能再提交或更新该目录中的文件

我只是删除并再次结帐,但整个目录都在演出。

是否有工具可以恢复特定文件夹的.svn文件夹而无需下载所有内容?

据我所知,它必须下载该文件夹中的所有文件,以便确定它们是否已被更改。但是具有有效.svn文件夹的子目录应该没问题。

哦..我是TortoiseSVN或Linux命令行的忠实粉丝。

思想?

7 个答案:

答案 0 :(得分:21)

如果您对文件进行了更改,并且无法删除它们,则可以使用Subversion 1.5功能,该功能允许您“使用障碍物结帐”。

只需删除此目录中的.svn目录即可: (使用--depth文件时,您不需要删除内部目录,感谢Eric)

如果损坏的目录是工作副本的顶级目录:

svn checkout --depth files --force REPOS WC

如果破坏的目录上方的目录仍然是版本的,请运行:

svn update --depth files --force WC

在该目录中。
在两个示例中,REPOS是存储库中与损坏的目录匹配的URL,WC是目录的路径。

最初修改的文件在此之后将处于修改状态。

答案 1 :(得分:5)

如果您知道哪个文件夹有损坏的.svn目录,则可以删除该目录并再次运行svn更新。您可能必须删除整个目录,包括其当前内容。当然,如果具有损坏的.svn目录的文件夹是包含千兆字节的文件夹,那么您就回到了开始的位置。

答案 2 :(得分:3)

备份缺少.svn

的文件夹

然后删除文件夹

如果是结帐的根源,则必须重新结账

如果它不是root用户,只需从上面的目录运行更新。

然后移动备份文件夹。 (理想情况下不要移回.svn文件夹)

继续工作并确保更新/提交!

答案 3 :(得分:2)

我在过去发现过这个问题,除了“核选项”(即删除目录并重新结账)外,没有找到合适的解决方案。

不确定这是否是您的问题,但我的损坏是由与SVN服务器在同一台计算机上的按访问病毒扫描程序引起的。

答案 4 :(得分:1)

如果子目录和OK以及它是大的子目录,您可以尝试非递归的新结账。

答案 5 :(得分:1)

所选解决方案对我来说是恢复顶级.svn文件夹,但它无法识别子对象,所以此时SVN的所有内容似乎都是陌生的,尽管版本在子文件夹中保持不变。

答案 6 :(得分:0)

我今天遇到了同样的错误。它发生在我尝试切换分支并且无法删除不在svn存储库中的文件之一时。之后,文件夹被锁定,我无法使用任何命令让它再次运行。

我基本上删除了我的内容并重做结帐。这是耗时的,但我真的想确保在我再次开始工作之前svn是清楚的。谢谢!