Subversion由于“先前的操作尚未完成”而卡住?
Posted
技术标签:
【中文标题】Subversion由于“先前的操作尚未完成”而卡住?【英文标题】:Subversion stuck due to "previous operation has not finished"? 【发布时间】:2012-04-25 01:43:53 【问题描述】:如果我尝试更新我的 subversion 存储库,它说我必须运行清理。如果我运行清理,它说文件丢失。 (我从我的家用电脑上删除了今天早上未能提交的文件的 MASSIVE 目录,但随后我从工作中提交了相同的文件集,现在我的家庭仓库已经破产了)。所以,清理说:
Cleanup failed to process blablabla Can't set file blablabla read-write: 系统找不到指定的文件。
如果我更新它说:
命令:更新错误:之前的操作还没有完成; 如果中断,请运行“清理”错误:请执行 “清理”命令。完成!:
如何解决这个问题?
【问题讨论】:
(除了删除所有SVN信息,重新签出) 那个恼人的错误是我讨厌 svn 的原因。每次面对这个我都必须重新结帐,因为从根文件夹或父文件夹清理不起作用。但最大的问题是当时不显示叠加图标,所以退房前不知道是哪个文件改了备份 【参考方案1】:我也遇到过类似的情况。您是否尝试过从工作区的根目录运行清理?我知道有时从子目录(问题所在)进行清理不起作用,而从工作区的根目录进行清理则可以。
如果仍然失败,因为您在某处删除了子目录。尝试从子目录中删除更高的 1 级(假设它不是根目录),然后重新尝试更新和清理。
如果清理尝试在任何级别都没有成功,那么很遗憾,答案是签出新的工作副本。
【讨论】:
从子目录中清理!它对我有用! 如果你正在阅读这篇文章,你就有麻烦了 :) 我从来没有在 Git 上遇到过这样的混乱(到目前为止)。如果 Svn 允许的话,我最终会在任何目录上清理/恢复/清理等。 我确实从 Windows FileExplorer(使用 Turtoise)运行了清理,它给了我一个更详细的错误,告诉我有问题的文件是什么,不知何故 SVN 丢失了该文件,一个 darm *.cache文件,所以我拿了另一个 .cache 并重命名它以替换丢失的文件,运行清理,这次没有错误,全部修复!!【参考方案2】:我尝试将 .svn 文件夹移至其他位置并将其放回同一根文件夹中。在我尝试更新 SVN 之后,它得到了更新。我不知道它是如何工作的。
【讨论】:
【参考方案3】:从主文件夹中删除 svn 并将其替换为您从 elsewere 获得的另一个可行副本。然后更新。 svn 文件夹通常是一个隐藏文件夹。因此,请确保在执行上述步骤之前取消隐藏文件夹。
【讨论】:
【参考方案4】:我刚刚遇到了类似的问题。运行 Process Explorer 显示另一个程序 (Notepad++) 有一个 SVN 试图删除的文件夹的文件句柄。当我关闭记事本++时,“清理”能够成功运行。
【讨论】:
这可能会产生问题中提到的问题。但我怕,如果已经发生了,它就无法清算它。【参考方案5】:对我有用的解决方法:
-
剪切目录的内容并将其复制到另一个文件夹。
从命令行对空文件夹运行清理。
将文件复制回原始文件夹中。
完成,但我无法解释为什么会发生这种情况。 如果您不删除文件,则清理命令会说他无法读取/写入这些文件。
【讨论】:
【参考方案6】:运行控制台svn cleanup
为我解决了同样的问题。
【讨论】:
控制台命令svn cleanup
也将提供比使用 Tortoise Explorer 插件更详细的信息,这在这种情况下非常有用。
运行控制台命令可能会提供足够的信息来实际解决问题。这是一个更好的答案。
好吧,我选择了最顶层的文件夹并使用了svn cleanup
,谢谢
我经常成功地遍历父目录并对其进行清理,但这有点耗时且“神奇”。从来不知道这会返回一个详细的错误,+1。
当您运行svn cleanup
时,请确保控制台已提升。我最初没有这样做,我得到了red-write: Access is denied
错误。【参考方案7】:
在文件打开时尝试运行清理给我带来了问题。一旦我关闭了我的应用程序(Visual Studio),我就运行清理并且它成功了
【讨论】:
是的。确保您的文件未在使用中或未以其他用户身份签出,例如 Windows 上的管理员。【参考方案8】:我遇到了同样的问题,什么对我有用:
-
将您的文件夹和文件复制到另一个地方,比如说一个文件夹(我最近更改了我的文件,承诺失败并导致了已解决的问题)
签出新的工作副本
将更改的文件从文件夹复制到工作副本并覆盖现有文件。提交/更新现在应该可以工作了
【讨论】:
【参考方案9】:通常不需要重新结帐或复制。
在此 (Link) 的帮助下,我刚刚解决了与“先前操作尚未完成”错误相关的类似问题
似乎 svn 在处理命令/操作时有时会卡住。 所有这些操作都存储在 .svn 文件夹中的数据库文件 wc.db 中。
通过将SQLite 下载到我的结帐目录并运行
sqlite3.exe .svn/wc.db "select * from work_queue"
您可以获得所有待处理操作的列表。这些操作是错误所指的“未完成”。
通过运行
sqlite3.exe .svn/wc.db "delete from work_queue"
所有旧操作都从工作队列中删除,错误消失。 不需要新的结帐或任何东西
【讨论】:
在尝试上述解决方案之前,您应该始终尝试运行清理。如果您想启动并运行卡住的 SVN 存储库,而无需签出新的工作副本,则此方法有效。 下载 sqlite.exe 并运行删除实际上比签出和合并更快——很好的答案 在此之后我也被“锁定”了,但通过“svn cleanup”解决了这个问题 我在Debian上运行这个,使用apt-get install sqlite3安装,然后你可以在没有.exe的情况下运行上述命令 我也收到了“锁定”消息,但随后我运行了“清理”命令,选中了“打破锁”框,它起作用了【参考方案10】:我遇到了同样的问题,不知何故发现我在 c:\ 级别有一个隐藏的 .svn 文件。一旦我删除了这个隐藏文件夹(.svn),一切正常。我一定是无意中在根驱动器上创建了一个工作目录。
【讨论】:
【参考方案11】:我遇到了一个错误,例如“无法更改文件'/Users/Code/UnitTest.cpp'的权限:没有这样的文件或目录”。颠覆者对不再存在的文件感到困惑。我只是做了类似“echo ABCD >> /Users/Code/UnitTest.cpp”的操作来创建文件的副本,然后进行清理。它奏效了。
【讨论】:
【参考方案12】:我在添加一个已经在 SVN 中的 jar 后遇到了这个问题,我添加了同名的新版本。
在 Eclipse 中我试过这个
-
右键单击文件夹 > 团队 > 刷新/清理。
清理、构建和刷新我的应用程序。
重新启动 Eclipse。
使用上述步骤我可以同步。
【讨论】:
为我工作。只是,第三步不是强制的(重启Eclipse)。 这也对我有用,我尝试了很多东西但没有奏效。我确实关闭了我的视觉工作室并运行了 clean-up 。非常感谢 只需右键单击文件夹 > 团队 > 刷新/清理对我来说都是必需的【参考方案13】:在我的情况下,尝试从 IDE 中提交时出现错误。当我在资源管理器中使用 TortoiseSVN 执行相同目录的提交时,操作成功。
【讨论】:
【参考方案14】:就我而言,我运行 gulp-watch 导致了问题。停止它后,我可以执行清理命令。
【讨论】:
这帮助我杀死了一个不需要的 JVM 并取得了进展。【参考方案15】:我遇到了同样的问题,在我的情况下,我使用的是 svn tortoise 和我的意思的应用程序。在 root 模式下使用 windows 的 cmd shell 我应用了 svn cleanup 然后 svn update.... 然后你可以回到应用模式 a 并且它会完美地工作!
【讨论】:
【参考方案16】:我在使用外部设备时发生了这种情况,其中一个损坏了。我不得不去那个文件夹并执行清理。然后清理工作适用于整个工作副本。
示例:使用外部^/widgets/foo common/foo-widget
,首先对文件夹common/foo-widget
进行清理。
【讨论】:
【参考方案17】:按照以下步骤操作。
1) 通过svn
进入无法成功清理的目录。(根文件夹或子文件夹)。
2)在目录中选择.svn
文件夹,剪切该文件夹并将其粘贴到单独的驱动器或单独的位置(在svn目录之外)
3) 现在,返回目录 - 右键单击并选择 TortoiseSVN -->Repo-browser
4) Checkout
文件夹(它不会执行新的结帐)。
5)你所有的项目都会重新版本化,它会修复svn的内部问题,问题应该得到解决。
【讨论】:
【参考方案18】:我最初在尝试使用 TortoiseSVN 时遇到了这个问题。最初,TortoiseSVN clean up 和 console svn cleanup 都失败了,并显示与原始海报相似的消息。
但我的解决方案(偶然发现)只是等待几分钟。我认为 TSVNCache 在签入时保留了其中一些文件。
【讨论】:
【参考方案19】:在我的例子中,一个后台 Java 虚拟机实例正在运行,杀死了哪个清理成功。
【讨论】:
【参考方案20】:在我的情况下,在我关闭 Visual Studio 并重试 CleanUp 后,它可以工作。
【讨论】:
【参考方案21】:我从我的开发伙伴那里拿走了 .svn 文件夹,并用这个替换了我的 .svn 文件夹。它对我有用。不知道还有什么后果!
【讨论】:
【参考方案22】:我在这里尝试了投票最多的答案和其他一些无济于事的答案。我的WORK_QUEUE
表是空的,我无法尝试在更高的文件夹中进行清理。 做了的工作如下(这是通过 Tortoise SVN);
Break Locks
的选项被勾选,然后点击确定
清理操作现已成功完成,我可以继续。无需下载 sqlite3 或其他复杂的解决方案。
【讨论】:
打破锁并没有像我想的那样。它只会破坏它在您的系统上使用的本地锁。不是别人设置的锁。 sqlite3 有时可以解决我的问题,但是那个方法太难记住了,而且经常清理失败。这个方法救了我.. 非常感谢,它对我有用!检查“Break Locks”是诀窍。【参考方案23】:当您尝试 SVN 切换/清理时文件仍处于打开状态时,可能会发生这种情况。
我有一个分支,我在其中创建了一个新文件,我在另一个应用程序中打开了该文件。切换到另一个分支无法删除导致切换失败的文件。这也是导致svn cleanup
失败的原因,但在 Tortoise SVN UI 中并未显示为原因。
从控制台窗口(在根文件夹上)运行svn cleanup
清楚地显示错误file\location\file.ext: The process cannot access the file because it is being used by another process
关闭所有打开的文件句柄/窗口并运行控制台svn cleanup
然后允许清理工作正常进行。
长话短说 - 在控制台中运行 svn cleanup
以查看更详细的错误。
【讨论】:
【参考方案24】:除了 Sigurd V 的回答(您应该先尝试一下),一些较大的代码库有多个“.svn”文件夹,它不一定是根目录中具有锁定任务的文件夹。
如果是这种情况,您必须检查每一项。如果您已经拥有 SQLite 和 Powershell,您可以快速找到有问题的目录。
要查找哪些文件夹被锁定运行(替换path\to\sqlite.exe
):
Get-ChildItem -Path . -Filter '.svn' -Recurse -Hidden | foreach $toFind = $_.FullName + "\wc.db" ; gci $toFind | foreach echo $_.FullName ; path\to\sqlite.exe $_.FullName "select * from work_queue"
。
这给出了一个 .svn 目录的列表,并且在每个目录的下方,是所有当前任务的列表。
如果有任何未完成的任务,对于每一个运行(替换path\to\sqlite.exe
和path\to\.svn\wc.db
):
path\to\sqlite.exe path\to\.svn\wc.db "delete from work_queue"
【讨论】:
【参考方案25】:我今天在尝试提交到 SVN 时解决了这个错误。 该错误是真实的,TortoiseSVN 无法访问我尝试提交的文件。此文件已在 Windows 中运行“以管理员身份”程序时保存。这意味着该文件具有管理员访问权限,但不能从我的帐户访问(TortoiseSVN 作为交互式用户运行)。 我在我的 Windows 帐户下获得了指定文件的所有权,之后清理就可以继续了。
【讨论】:
【参考方案26】:我也遇到了同样的问题:
1.尝试杀死与svn相关的进程,即TSVNCache.exe和TortoiseProc 2.还原未版本化的文件并删除我在 svn 中的文件。 3.cleanup使用命令提示符“svn cleanup”
最后重新启动桌面时它对我有用,所以重新启动系统对我有用
【讨论】:
【参考方案27】:我已经看到svn
的几个问题,包括这个,通过删除/创建.svn/tmp
目录解决。然后运行svn cleanup
【讨论】:
【参考方案28】:我使用乌龟 SVN。清理失败时,检查清理选项
确保选中Break Locks选项。
清理步骤
探索文件夹中的鼠标左键 选择“Tortoise SVN”->“清理...”菜单 选中“Break Locks”并按“确定”它已经回答了,但有时图片有帮助
【讨论】:
【参考方案29】:在 Eclipse 中;
-
右键单击您的项目文件夹 > 团队 > 刷新/清理。
在 Eclipse 窗口中,选择 Project 菜单项下的 clean 选项
最后重启Eclipse
【讨论】:
以上是关于Subversion由于“先前的操作尚未完成”而卡住?的主要内容,如果未能解决你的问题,请参考以下文章
ztree在onCheck()方法中防止因触发联动关系导致页面多次渲染而卡死的问题
Kafka 连接器记录写入器因缺少要分配的内存而卡在 S3OutputStream 中,但在几个小时内保持空闲状态并没有失败