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

时间:2020-03-06 14:23:15  来源:igfitidea点击:

我有几个大型结帐文件,其中.svn文件夹已损坏,所以我得到了一个错误,"清理程序无法处理以下路径。。"而且我无法再提交或者更新该目录中的文件。

我只是删除并再次签出,但整个目录都超过了演出。

有没有一种工具可以还原特定文件夹的.svn文件夹而不必下载所有内容?

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

哦..我是TortoiseSVN或者Linux命令行的忠实拥护者。

有什么想法吗?

解决方案

我过去曾遇到过这种情况,除了"核选项"(即删除目录并重新签出)外,没有找到任何可行的解决方案。

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

如果知道哪个文件夹的.svn目录已损坏,则可以删除该目录并再次运行svn更新。我们可能必须删除整个目录,包括其当前内容。当然,如果损坏的.svn目录的文件夹是包含1 GB的文件夹,那么我们将回到开始的位置。

如果我们对文件进行了更改,但无法删除它们,则可以使用Subversion 1.5功能,该功能允许我们"有障碍物签出"。

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

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

svn checkout --depth files --force REPOS WC

如果上面的目录仍然存在版本,请运行:

svn update --depth files --force WC

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

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

如果子目录还可以,并且子目录很大,则可以尝试进行非递归的新签出。

对缺少.svn的文件夹进行备份

然后删除文件夹

如果它是结帐的根源,那么我们将不得不重新结帐

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

然后将备份文件夹移到其顶部。 (理想情况下,不要移回.svn文件夹)

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

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

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

选定的解决方案对我来说可以还原顶级.svn文件夹,但是它无法识别子对象,因此,尽管子文件夹中的版本控制完好无缺,但是这一切似乎对SVN而言都是陌生的。