如果我试图更新我的subversion repo,它说我必须运行清理。如果我运行清理,它会显示一个文件丢失。(我删除了今天早上在我的家庭电脑上未能提交的文件的MASSIVE目录,但后来我从工作中提交了相同的文件集,现在我的家庭回购崩溃了)。所以,清理的意思是:

Cleanup failed to process blablabla Can't set file blablabla read-write:系统找不到指定的文件。

如果我更新它说:

命令:更新错误:上一个操作尚未完成; 如果它被中断,请运行'cleanup' “清理”命令。完成了!:

我怎么才能把它弄出来呢?


当前回答

遵循以下步骤。

1)通过svn进入无法成功清理的目录。(根文件夹或子文件夹)。

2)选择目录下的。svn文件夹,将该文件夹剪切并粘贴到单独的驱动器或单独的位置(svn目录外)

3)现在回到目录-右键单击并选择TortoiseSVN——>Repo-browser

4)签出文件夹(不会进行新鲜签出)。

5)你所有的项目会重新版本,修复svn的内部问题,问题应该会解决。

其他回答

我也遇到过类似的情况。您尝试过从工作区的根目录运行清理工作吗?我知道有时从子目录(问题所在)进行清理不起作用,而从工作空间的根目录进行清理则可以。

如果仍然失败,因为您已经删除了某个地方的子目录。尝试从子目录中删除更高一级(假设不是根目录),并重新尝试更新和清理。

如果任何级别的清理尝试都没有成功,那么不幸的是,答案是签出一个新的工作副本。

根据Sigurd V的回答(你应该先尝试一下),一些较大的代码库有多个'。Svn的文件夹,它不一定是根目录中有锁定任务的文件夹。

如果是这样的话,你必须检查每一个。如果你已经有了SQLite和Powershell,你就可以快速地找到有问题的目录。

要查找哪些文件夹被锁定运行(将路径\替换为\sqlite.exe):

Get-ChildItem -Path。过滤器”。svn' -递归-隐藏| foreach {$toFind = $_。FullName + "\wc.db";gci $查找| foreach {echo $_。FullName;路径\ \ sqlite.exe $ _。select * from work_queue}}。

这给出了一个.svn目录列表,在每个目录下面是当前任务的列表。

如果有任何未完成的任务,每次运行(将路径\替换为\sqlite.exe和路径\替换为\.svn\wc.db):

路径\到\sqlite.exe路径\到\.svn\wc.db "delete from work_queue"

我也遇到了同样的问题,不知怎么的,我发现在c:\级别有一个隐藏的.svn文件。一旦我删除了这个隐藏文件夹(.svn),一切工作正常。我一定是无意中在根驱动器上创建了一个工作目录。

这发生在我使用外部时,其中一个是腐败的。我得去那个文件夹清理一下。然后对整个工作副本进行清理。

示例:使用external ^/widgets/foo common/foo-widget,首先对common/foo-widget文件夹执行清理。

我最初在尝试用TortoiseSVN签入时遇到了这个问题。最初,TortoiseSVN清理和控制台svn清理都失败了,消息与原始海报相似。

但我的解决方案(偶然发现的)只是等几分钟。我认为TSVNCache在签入时保留了其中一些文件。