svn Can't revert without reverting children 解决方案

本文记录了一次使用SVN过程中遇到的提交失败问题及其解决过程。主要错误为文件夹被计划添加但缺失,尝试使用revert命令时提示需使用--depth infinity选项,并最终通过remove命令解决了问题。

转载自:http://blog.youkuaiyun.com/qi_ruihua/article/details/22730473


下面的是我的截图:




EMZ3.0 qrh$ svn commit -m ""
svn: E155010: Commit failed (details follow):
svn: E155010: '/Users/qrh/Desktop/work/svn/emz/iOS/trunk/EMZ3.0/TravelGuide/zxing-master' is scheduled for addition, but is missing
jokey:EMZ3.0 qrh$ svn revert /Users/qrh/Desktop/work/svn/emz/iOS/trunk/EMZ3.0/TravelGuide/zxing-master
svn: E155038: Try 'svn revert --depth infinity' instead?
svn: E155038: Can't revert'/Users/qrh/Desktop/work/svn/emz/iOS/trunk/EMZ3.0/TravelGuide/zxing-master' without reverting children
jokey:EMZ3.0 qrh$ svn rm --keep-local/Users/qrh/Desktop/work/svn/emz/iOS/trunk/EMZ3.0/TravelGuide/zxing-master
D         TravelGuide/zxing-master
D         TravelGuide/zxing-master/cpp
D         TravelGuide/zxing-master/cpp/.gitignore
D         TravelGuide/zxing-master/cpp/.svnignore
D         TravelGuide/zxing-master/cpp/.valgrind.supp
D         TravelGuide/zxing-master/cpp/.valgrindrc
D         TravelGuide/zxing-master/cpp/README
D         TravelGuide/zxing-master/cpp/SConscript

这个问题通常出现在版本控制系统(如 Git 或 SVN)中,提示信息 `cleanup failed without reverting children` 一般意味着在执行清理操作(如 `svn cleanup` 或 Git 的某些操作)时出现了错误,系统无法正常完成清理,也无法回滚到之前的状态。 ### 常见场景 - **Subversion (SVN)** 中执行 `svn cleanup` 时,如果某些文件或目录被锁定(例如,因为程序正在使用它们),SVN 无法清理这些资源,就可能报出这个错误。 - **Git** 中也有可能在某些工具(如 IDE 插件、第三方 Git 工具)尝试清理文件时出现类似问题。 --- ### 解决方案(以 SVN 为例) #### ✅ 步骤一:检查锁定的文件 关闭所有可能锁定文件的程序,如: - 编辑器(VSCode、IDEA、Sublime) - 文件管理器(资源管理器或 Finder) - 构建工具(Webpack、Gradle) #### ✅ 步骤二:手动删除锁文件(SVNSVN 会在 `.svn` 目录下保存锁定信息。你可以尝试手动删除这些锁。 ```bash find . -type d -name ".svn" -exec rm -rf {} \; ``` ⚠️ 注意:这会删除整个 `.svn` 文件夹,之后你需要重新 checkout。 #### ✅ 步骤三:重新 checkout 如果上述方式无法解决问题: ```bash svn checkout <repository-url> <local-path> ``` #### ✅ 步骤四:使用 TortoiseSVN(图形界面) 如果你使用的是 Windows,TortoiseSVN 提供了更友好的方式来处理锁和清理问题: - 右键点击项目文件夹 - 选择 `Clean up` - 勾选 `Break locks` 和 `Fix timestamp` 等选项 --- ### Git 中的类似问题处理 如果你是在使用 Git 或 Git 插件遇到类似问题,可以尝试: 1. 关闭 IDE 2. 删除 `.git/index` 和 `rm -f .git/lock` 3. 重建 index: ```bash rm -f .git/index git reset git add . ``` --- ### 示例代码(Git 修复脚本) ```bash #!/bin/bash # 备份当前分支名 current_branch=$(git symbolic-ref --short HEAD) # 删除 index 和 lock 文件 rm -f .git/index rm -f .git/lock # 重新初始化 index git reset # 重新添加所有文件 git add . # 重新切换分支(如果有必要) git checkout $current_branch ``` --- ### 解释 - `rm -f .git/index`:删除索引文件,这是 Git 缓存区域的核心文件。 - `git reset`:重建索引。 - `git add .`:重新将所有文件加入暂存区。 - `git checkout`:确保分支状态一致。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值