SVN清理报错缺失.svn-base文件 如何无需重新克隆修复工作副本
修复步骤
请先确认你已完成SVN仓库目录的杀毒软件排除配置,避免修复过程中文件再次被误删。
第一步:备份本地SVN数据库
进入工作副本根目录下的.svn文件夹,找到wc.db文件,复制一份到其他目录做备份,防止操作失误损坏本地工作副本记录。
第二步:清空卡住的工作队列
可根据你的使用习惯选择任意一种操作方式:
命令行操作
- 下载sqlite3命令行工具,将其放到系统可直接调用的路径
- 打开命令提示符,切换到工作副本根目录,执行命令打开数据库:
sqlite3 .svn/wc.db - 在sqlite交互界面执行以下命令清空卡住的工作队列:
DELETE FROM work_queue; - 执行
.quit退出sqlite交互界面
TortoiseSVN可视化操作(无需下载额外工具)
高版本TortoiseSVN自带清理工作队列的选项:右键点击工作副本根目录→ TortoiseSVN → 清理,勾选*“清理工作队列”*选项,取消其他所有选项后执行清理,即可跳过手动修改数据库的步骤。
第三步:执行正常清理
工作队列清空后,再次执行SVN清理:
- 命令行执行:
svn cleanup - TortoiseSVN用户直接右键执行清理,保持默认选项即可
此时清理不会再报之前的路径处理失败错误。
第四步:补全缺失的.svn-base文件
- 如果你的工作副本没有未提交的本地修改,直接在根目录执行深度还原:
命令行:svn revert --depth=infinity .
TortoiseSVN:右键→ TortoiseSVN → 还原,勾选*“递归处理子目录”*后执行,SVN会自动从远端仓库拉取所有缺失的基础文件。 - 如果你的工作副本存在未提交的本地修改,先将所有有修改的文件复制到工作副本外做备份,再执行上述还原操作,操作完成后将备份的修改文件覆盖回原路径即可,后续可以正常提交修改。
- 还原完成后执行一次强制更新,确保所有文件与远端同步:
命令行:svn update --force
TortoiseSVN:右键→ SVN更新,按住Shift点击确定即可触发强制更新。
补充说明
如果还有个别文件报错,你可以单独删除该文件所在的子目录(注意备份该目录下的本地修改),然后执行svn update单独更新这个子目录,只会拉取该目录的内容,不会下载整个11G的仓库。
内容的提问来源于stack exchange,提问作者Thomas W.
相关产品推荐
相关产品推荐

