1

我在 Windows XP 上安装了 TortoiseHg。虽然我可以hg从命令行正常使用大多数命令,但我不能使用hg commit(没有-m选项),因为它无法启动我的编辑器。这就是发生的事情:

> hg commit
/c: /c: is a directory
abort: edit failed: notepad.exe exited with status 126

在 mercurial.ini 中,我将编辑器设置为:[ui] editor = notepad.exe

如果我自己输入notepad.exe甚至只是notepad从命令行输入,那么记事本就可以正常工作。将编辑器变量更改为其他值(如foobar)确认 Mercurial 正在读取该变量并尝试以foobar相同的结果运行(foobar exited with status 126)。

我在使用部分 TortoiseHg GUI 时也遇到了问题。单击时,“查看修订版”等上下文菜单选项不起作用。大概他们正在尝试启动编辑器但失败了。

这个问题已经持续了大约 2 1/2 年使用 Mercurial,我已经尝试了我能想到的一切以另一种方式设置编辑器变量或将其设置到另一个程序。当前使用 TortoiseHg 2.8 版(“使用 Mercurial-2.6、Python-2.7.3、PyQt-4.9.6、Qt-4.8.4”)。

相关问题:
在 TortoiseHg 中使用其他编辑器
如何在 Windows 上为 Mercurial 指定不同的编辑器?
Mercurial Editor:“中止:系统找不到指定的文件”

4

1 回答 1

0

没多久,我才意识到这个问题。Mercurial 和 TortoiseHg 将我的Editor变量的值运行到命令解释器中,该解释器是COMSPEC 环境变量指定的任何一个

显然,在我的生活中,有一次我将此变量设置为 msys shell C:\msys\bin\sh.exe(可能是徒劳地试图解决一个与我在这里问的问题不同的问题)。有趣的错误是因为 msys shell 被/c notepad.exe作为参数发送的。

如果 Mercurial 也决定也使用 COMSPEC,我不知道为什么/c要传递额外的开关(这是特定的)。cmd.exe此外,在从 TortoiseHg 编辑设置时,我有些误导地告诉我,如果Shell我的 mercurial 配置文件中的值未指定,那么它将默认为cmd.exeWindows。不过,这个值Shell可能用于其他用途,例如“打开终端”上下文菜单。

于 2013-05-18T03:44:06.033 回答