【问题标题】:Mercurial Fails to Update to A Revision Due to a File Name由于文件名,Mercurial 无法更新到修订版
【发布时间】: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_CTYPELANG 的环境都设置为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


【解决方案1】:

我首先运行hg man 来获取相关的PATHNAME,然后通过hg cat PATHNAME 提取该文件的内容

然后您可以尝试hg revert --all --exclude PATHNAME 提取其他所有内容(假设所有其他文件名都被主机操作系统接受)。

【讨论】:

  • 不起作用,即使使用 --exclude 错误消息也是一样的
猜你喜欢
  • 1970-01-01
  • 2010-11-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2010-10-24
  • 1970-01-01
  • 2022-01-24
相关资源
最近更新 更多