27

我有几个大型结帐,其中 .svn 文件夹已损坏,因此我收到错误消息,“清理无法处理以下路径..”并且我无法再提交或更新该目录中的文件。

我只是删除并再次结帐,但整个目录已经结束了。

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

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

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

想法?

4

7 回答 7

22

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

只需删除此目录中的 .svn 目录,然后:(
使用 --depth 文件时无需删除内部目录,谢谢 Eric)

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

svn checkout --depth files --force REPOS WC

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

svn update --depth files --force WC

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

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

于 2008-09-18T20:13:07.450 回答
5

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

于 2008-09-18T20:07:19.930 回答
3

备份缺少 .svn 的文件夹

然后删除文件夹

如果它是结帐的根,您将不得不重新结帐

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

然后将备份文件夹移到它上面。(理想情况下不要移回 .svn 文件夹)

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

于 2008-09-18T20:17:17.753 回答
2

我过去遇到过这个问题,除了“核选项”(即删除目录并重新结帐)之外,没有找到任何可行的解决方案。

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

于 2008-09-18T20:06:40.353 回答
1

如果子目录正常并且子目录很大,您可以尝试非递归新结帐。

于 2008-09-18T20:15:36.010 回答
1

选择的解决方案对我有用,可以恢复顶级 .svn 文件夹,但它不能识别子对象,所以此时一切对 SVN 来说似乎都是陌生的,尽管子文件夹中的版本控制是完整的。

于 2010-10-29T22:02:02.527 回答
0

我今天遇到了同样的错误。当我尝试切换分支并且未能删除不在 svn 存储库中的文件之一时,就会发生这种情况。之后,该文件夹被锁定,我无法使用任何命令使其再次工作。

我基本上删除了我拥有的东西并重新结帐。这很耗时,但我真的想确保 svn 清晰,然后才能重新开始工作。谢谢!

于 2008-11-11T00:01:27.193 回答