Mercurial仓库异常:执行操作时报"No such file or directory"错误
Mercurial 6.4.2 + TortoiseHg:二进制文件操作触发"No such file or directory"问题排查与修复困境
问题背景
- 环境:Mercurial 6.4.2 + TortoiseHg(长期使用)
- 现象:操作特定文件夹内的二进制文件(更新文件、删除文件夹后重新添加)时,反复触发
No such file or directory错误 - 初步检测:
hg verify确认仓库存在问题,判定部分文件历史已损坏
已执行的修复操作
- 按照仓库损坏修复文档执行转换命令:
hg convert --config convert.hg.ignoreerrors=True sqs sqsfix - 转换过程中移除了288个损坏文件的
.i文件,新仓库执行hg verify检测无异常 - 将损坏文件的最新版本复制到新仓库并尝试提交,仍触发相同错误,谷歌搜索未找到相关解决方案
排查方向建议
- 检查路径与文件名特殊性:确认二进制文件的路径/文件名是否包含非ASCII字符、空格、特殊符号,或是路径长度超出系统限制(如Windows默认260字符上限),此类情况可能导致Mercurial或TortoiseHg解析路径失败。
- 验证文件完整性与权限:对比文件哈希值确认复制到新仓库的文件是否完整;检查文件及文件夹的系统权限,确保当前用户拥有读写权限。
- 排查TortoiseHg兼容性:确认TortoiseHg版本与Mercurial 6.4.2兼容,尝试升级TortoiseHg;跳过TortoiseHg,直接用命令行执行
hg add+hg commit,排查是否为UI层问题。 - 检查仓库配置与状态:查看新仓库的
hgrc,临时禁用非核心扩展/钩子后重试;执行hg status -v查看文件状态,确认是否有.hgignore规则干扰文件跟踪。 - 手动重建文件层级:先在新仓库创建目标文件夹(可添加占位文件让Mercurial识别层级),再复制二进制文件到对应路径,逐步执行
hg add和提交,排查是否为文件夹层级导致的问题。
内容的提问来源于stack exchange,提问作者naasking
相关产品推荐
相关产品推荐

