使用SVN cleanup删除未版本化文件时遇非空目录错误的解决方法
解决SVN Cleanup删除未版本化文件时的目录非空错误
我太懂这种反复执行命令才能成功的烦躁了!你遇到的这个svn: E720145错误,真不是权限问题,大概率是后台进程在占用obj目录里的文件,导致SVN第一次执行时没法彻底清空目录。下面几个方法亲测有效:
先关掉可能占用文件的程序:如果你的项目是用VS之类的IDE打开的,先彻底关闭IDE(别只最小化),还有后台的编译进程(比如
msbuild.exe、devenv.exe),甚至文件管理器如果打开了obj目录也关掉。这些进程会锁定目录里的编译产物,让SVN删不掉。手动强制删除顽固目录后再执行Cleanup:
针对Windows系统,打开命令提示符,先执行:rmdir /s /q "你的项目路径\obj"(
/s删除目录及子目录,/q静默执行不提示)
针对Linux/macOS,用:rm -rf 你的项目路径/obj手动删掉这些非空目录后,再跑
svn cleanup --remove-unversioned,基本一次就能成功。升级SVN到最新稳定版:旧版本的SVN在处理嵌套目录锁定、文件占用检测上可能有bug,升级到最新版(比如1.14.x及以上),很多这类莫名其妙的删除失败问题会直接消失。
临时关闭实时杀毒软件:有些杀毒软件的实时防护会扫描并锁定
obj里的临时文件,导致SVN无法删除。临时禁用实时保护,执行完Cleanup后再开启即可。
如果经常碰到这个问题,还可以写个简单的脚本自动化处理,比如Windows下的bat脚本:
@echo off :: 关闭可能占用文件的IDE和编译进程 taskkill /f /im devenv.exe >nul 2>&1 taskkill /f /im msbuild.exe >nul 2>&1 :: 强制删除obj目录 rmdir /s /q "你的项目根目录\obj" >nul 2>&1 :: 执行SVN Cleanup svn cleanup --remove-unversioned
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

