为什么Win7系统上hg purge仅首次运行时报*.*路径不存在错误?
问题根因
这是Mercurial 4.6.1版本在Windows平台内置purge扩展的已知兼容性bug,当待扫描的目录路径混合使用正斜杠、反斜杠,且首次扫描时存在未被Mercurial索引的临时文件/目录占用锁时,程序会错误将系统全局通配符*.*当成实际路径片段拼接后执行查询,最终触发路径不存在的报错。
首次执行报错后Mercurial已经完成了当前目录结构的索引缓存写入,所以第二次执行时直接读取缓存即可跳过错误的通配符拼接逻辑,运行成功。
解决方案
- 优先升级Mercurial到5.0及以上正式版本,该版本已正式修复Windows平台下路径斜杠混合场景的通配符解析逻辑,可彻底解决该问题。
- 若暂时无法升级Mercurial版本,可在自动化脚本的purge命令执行前,先执行一次
hg status命令强制刷新目录索引缓存,规避首次扫描的异常逻辑,参考执行流程:cd c:\working hg status > nul hg purge --config extensions.purge= --all --dirs --files - 也可在purge命令中增加
--include参数指定纯反斜杠格式的目标路径,避免斜杠混合触发解析异常,参考命令:hg purge --config extensions.purge= --all --dirs --files --include C:\working\app\**
内容的提问来源于stack exchange,提问作者StayOnTarget
相关产品推荐
相关产品推荐

