TortoiseSVN 提示 Previous operation has not finished,普通 Cleanup 又失败时,可以检查工作副本数据库写锁。旧案例在 Cleanup 中勾选 Break write locks 后恢复,但这与撤销修改、解除仓库文件锁不是一回事。

错误发生在工作副本状态上

中断的更新或其他操作可能让工作副本处于未完成状态。旧记录的现象是反复要求先执行 Cleanup,执行后仍不能继续。此时应在工作副本顶层目录检查,而不是直接删除 .svn 或重新覆盖整个目录。

首先保留本地改动和未纳入版本控制的文件,并确保没有其他 SVN 客户端、IDE 操作或其他用户正在使用同一份工作副本。

Break write locks 清理什么

Cleanup 对话框里的 Break write locks 处理的是工作副本数据库写锁。它帮助恢复工作副本内部状态,不等于对服务器上的版本化文件执行 Release lock。TortoiseSVN Cleanup 文档

旧案例的处理顺序可以归纳为:

  1. 停止对同一工作副本的其他操作。
  2. 在顶层目录打开 Cleanup。
  3. 检查清理工作副本状态与 Break write locks 选项。
  4. 完成后重新查看状态,再继续原来未完成的更新等操作。

如果仍然失败,应读完整错误,检查权限、磁盘和工作副本格式;不能靠反复点同一个按钮证明根因。

不要把清理选项全部勾上

同一对话框还可能包含删除未版本化文件、删除忽略文件以及递归 Revert。它们并非清理写锁所必需,影响也不同:Revert 会撤回未提交的本地修改,未版本化目录还可能包含仅存在于本机的资料。

不建议通过直接修改 wc.db、删除 .svn 或清空目录解决这类问题。确认恢复时,应同时检查 SVN 状态可读取、本地改动仍在,以及原操作能够继续;单纯不再弹出一个提示还不够。