SVN提示“Working copy locked”或“Failed to create new lock”的本质是本地工作副本元数据异常,修复应优先执行svn cleanup;若失败,可尝试--force参数、TortoiseSVN勾选Break locks清理、SQLite清空WORK_QUEUE表、释放被占用文件锁或修正svn:ignore属性。

SVN提示“Failed to create new lock”或“Working copy locked”,本质是本地工作副本残留了未释放的锁标记,导致后续操作(如更新、提交)被拒绝。这不是服务器端问题,而是本地元数据状态异常,修复重点在清理锁和恢复一致性。
先执行强制清理命令
多数情况下,直接运行标准清理命令即可解除锁定:
- 进入工作副本根目录,执行:svn cleanup
- 若失败,尝试强制清理:svn cleanup --force
- 使用 TortoiseSVN 时,在右键菜单中选择“Clean up”,勾选 Break locks 和 Include externals 两项再执行
手动清空 wc.db 中的待处理队列
当 cleanup 失效,大概率是 .svn/wc.db 数据库中的事务队列(WORK_QUEUE 表)卡住。需用 SQLite 工具干预:
- 用 DB Browser for SQLite 打开 .svn/wc.db
- 定位到 WORK_QUEUE 表,执行 DELETE FROM WORK_QUEUE
- 保存修改,关闭数据库,再运行 svn cleanup
- 注意:不要删表结构,只清空数据;部分旧版本 SVN 使用 WC_LOCK 表,也一并清空
检查并释放被占用的文件或进程
锁无法创建,有时并非元数据问题,而是文件正被其他程序独占:
- 关闭 IDE(如 IntelliJ、Eclipse)、编辑器(如 VS Code)、资源管理器预览窗格等可能锁定文件的程序
- 在 Windows 上打开任务管理器,搜索相关进程(如 javaw.exe、explorer.exe),结束可疑项
- 在 macOS/Linux 上使用 lsof +D /path/to/working/copy 查看哪些进程正在访问该目录
- 确认当前用户对整个工作副本目录有完整读写权限
临时移除干扰性属性与忽略规则
某些 svn 属性会间接阻碍清理流程,尤其 svn:ignore 设置错误时:
- 运行 svn propget svn:ignore . 查看当前目录是否设置了异常忽略模式
- 如有误配,执行 svn propdel svn:ignore . 删除该属性
- 检查 TortoiseSVN 全局设置里的“全局忽略样式”,移除可能匹配当前路径的规则
- 避免在父目录设置过于宽泛的忽略(如 *.* 或 build/),防止 cleanup 跳过关键子目录

















