在使用 Mercurial 版本控制系统管理位于 TrueCrypt 加密分区上的项目时,用户可能会遇到以下错误:
unknown exception encountered, details follow
** report bug details to http://mercurial.selenic.com/bts/
** or mercurial@selenic.com
** Mercurial Distributed SCM (version 1.5.2+20100502)
** Extensions loaded:
Traceback (most recent call last):
File "/usr/local/bin/hg", line 27, in <module>
mercurial.dispatch.run()
File "/Library/Python/2.6/site-packages/mercurial/dispatch.py", line 16, in run
sys.exit(dispatch(sys.argv[1:]))
File "/Library/Python/2.6/site-packages/mercurial/dispatch.py", line 30, in dispatch
return _runcatch(u, args)
File "/Library/Python/2.6/site-packages/mercurial/dispatch.py", line 50, in _runcatch
return _dispatch(ui, args)
File "/Library/Python/2.6/site-packages/mercurial/dispatch.py", line 470, in _dispatch
return runcommand(lui, repo, cmd, fullargs, ui, options, d)
File "/Library/Python/2.6/site-packages/mercurial/dispatch.py", line 340, in runcommand
ret = _runcommand(ui, options, cmd, d)
File "/Library/Python/2.6/site-packages/mercurial/dispatch.py", line 521, in _runcommand
return checkargs()
File "/Library/Python/2.6/site-packages/mercurial/dispatch.py", line 475, in checkargs
return cmdfunc()
File "/Library/Python/2.6/site-packages/mercurial/dispatch.py", line 469, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
File "/Library/Python/2.6/site-packages/mercurial/util.py", line 401, in check
return func(*args, **kwargs)
File "/Library/Python/2.6/site-packages/mercurial/commands.py", line 3332, in update
return hg.update(repo, rev)
File "/Library/Python/2.6/site-packages/mercurial/hg.py", line 362, in update
stats = _merge.update(repo, node, False, False, None)
File "/Library/Python/2.6/site-packages/mercurial/merge.py", line 495, in update
_checkunknown(wc, p2)
File "/Library/Python/2.6/site-packages/mercurial/merge.py", line 77, in _checkunknown
for f in wctx.unknown():
File "/Library/Python/2.6/site-packages/mercurial/context.py", line 660, in unknown
return self._status[4]
File "/Library/Python/2.6/site-packages/mercurial/util.py", line 156, in __get__
result = self.func(obj)
File "/Library/Python/2.6/site-packages/mercurial/context.py", line 622, in _status
return self._repo.status(unknown=True)
File "/Library/Python/2.6/site-packages/mercurial/localrepo.py", line 1023, in status
if (f not in ctx1 or ctx2.flags(f) != ctx1.flags(f)
File "/Library/Python/2.6/site-packages/mercurial/context.py", line 694, in flags
flag = findflag(self._parents[0])
File "/Library/Python/2.6/site-packages/mercurial/context.py", line 690, in findflag
return ff(path)
File "/Library/Python/2.6/site-packages/mercurial/dirstate.py", line 145, in f
if 'x' in fallback(x):
TypeError: argument of type 'NoneType' is not iterable
该错误是由于 Mercurial 版本 1.5.2 中的一个 bug 导致的。
解决方案
要解决此问题,用户可以将 Mercurial 升级到 1.5.3 或更高版本。
以下是在 OS X 10.6.3 上安装 Mercurial 1.5.3 的步骤:
- 下载 Mercurial 1.5.3 安装程序。
- 双击安装程序并按照屏幕上的说明进行安装。
- 安装完成后,打开终端并输入以下命令:
hg --version
如果输出结果显示 Mercurial 版本为 1.5.3 或更高版本,则安装成功。
代码例子
如果用户遇到其他 Mercurial 问题,可以使用以下命令生成错误报告:
hg debuginstall --debug
该命令将生成一个包含 Mercurial 调试信息的日志文件。用户可以将日志文件发送给 Mercurial 开发团队以帮助他们解决问题。