【发布时间】:2018-03-13 14:36:31
【问题描述】:
我有一个我正在尝试处理的存储库。不幸的是,当我 update 进行感兴趣的修订时,它会失败并显示消息
abort: Illegal byte sequence: /Users/<user>/Projects/P/infusion16/Standings ? Kattis, Infusion Programming Contest 2016.pdf
当我使用 --traceback 和 --debug 选项运行更新时,它显示如下:
File "/Users/evgeniy.sharapov/.pyenv/versions/2.7.14/lib/python2.7/site-packages/mercurial/merge.py", line 1381, in batchget
atomictemp=atomictemp)
File "/Users/evgeniy.sharapov/.pyenv/versions/2.7.14/lib/python2.7/site-packages/mercurial/context.py", line 1969, in write
**kwargs)
File "/Users/evgeniy.sharapov/.pyenv/versions/2.7.14/lib/python2.7/site-packages/mercurial/localrepo.py", line 1115, in wwrite
**kwargs)
File "/Users/evgeniy.sharapov/.pyenv/versions/2.7.14/lib/python2.7/site-packages/mercurial/vfs.py", line 87, in write
with self(path, 'wb', backgroundclose=backgroundclose, **kwargs) as fp:
File "/Users/evgeniy.sharapov/.pyenv/versions/2.7.14/lib/python2.7/site-packages/mercurial/vfs.py", line 409, in __call__
fp = util.posixfile(f, mode)
IOError: [Errno 92] Illegal byte sequence: '/Users/<user>/Projects/Puzzles/infusion16/Standings \x96 Kattis, Infusion Programming Contest 2016.pdf'
abort: Illegal byte sequence: /Users/<user>/Projects/Puzzles/infusion16/Standings ? Kattis, Infusion Programming Contest 2016.pdf
看起来它有某种文件名不支持的字符?我检查了LC_CTYPE 和LANG 的环境都设置为en_US.UTF-8。
在这种情况下可以做什么?我可能没有这个文件也可以生活,或者它被重命名了?另一个问题是update 中的失败发生在进程中间,所以我没有工作目录中的所有文件。
【问题讨论】:
-
你用的是什么版本的?
-
Mercurial 分布式 SCM(4.5 版)。通过 pip 作为 python 模块安装。
-
显然 Mercurial 代码中存在使用已弃用功能 (
utils.posixfile) 的问题。我想知道是否有补救措施或解决方法。 -
由于您使用的是最新版本的 mercurial,我建议您在 mercurial 的 bugzilla 上提交一个错误:bz.mercurial-scm.org。
-
将工作树移至 Linux 系统。 macOS 不接受非 UTF-8 文件名。
标签: mercurial