emacs的egg git接口,提交消息为空

时间:2010-03-26 08:47:08

标签: git emacs egg

我在emacs中使用egg(emacs get git)作为git接口。 每当我尝试实现提交--amend时,我都会收到"GIT-COMMIT-AMEND> Aborting commit due to empty commit message".

这就是我的所作所为:

C-u C-x v c

然后出现提交缓冲区,带有我之前提交的消息。

然后在C-c C-c上,我收到上述消息:空提交消息。

我认为我以前曾经常常提交这种行为(如不修改),但不记得或找不到我的解决方法。

我尝试编辑邮件(在某处添加空格)。没有工作。

我尝试在提交之前保存缓冲区,这也不起作用(因为C-c C-c在提交缓冲区之外的另一个缓冲区中没有活动)。

有任何线索吗?

4 个答案:

答案 0 :(得分:1)

这是因为编辑器emacs尝试打开commit --amend吗?见this exchange

  

[06:28:18] <burningdog>问题:这是我第一次使用git提交。我希望“git commit”允许我输入提交消息,但它会在TextWrangler(我在Mac上)中打开.git/COMMIT_EDITMSG并终止提交,说“{{1} }“ 我究竟做错了什么?

     

Aborting commit due to empty commit message. burningdog:打开时可能[06:29:24] <Ilari>与shell分离。这会导致git在编辑器打开时认为您已完成提交消息。

     

TextWrangler Ilari:嗯......这听起来很对。 [06:30:10] <burningdog>将发送给它的任何内容发送给/usr/bin/edit。也许我可以改变它......

     

TextWranger burndog:要么选择不要这么做。否则将提交消息写入文件,然后使用[06:30:27] <Ilari>提交。

     

-F <file> Ilari:当用户输入提交消息时,git是否会调用[06:31:26] <burningdog>的行为?

     

/usr/bin/edit用于确定要打开的编辑器的设置很少。

     

[06:32:09] <Ilari>啊,以便在某些编辑器中打开默认文本。得到它了。

     

[06:32:54] <burningdog> Burningdog:[06:34:06] <Ilari>core.editor $GIT_EDITOR $VISUAL

     

$EDITOR Ilari:我改变了我的bash配置文件以使用pico作为编辑器 - 修正了它。谢谢你的帮助:)

答案 1 :(得分:1)

问题解决了,虽然我不太明白。

我不得不改变鸡蛋的一些选择。在某些情况下,它似乎没有正确的字符串来查找git.exe

我做了什么:

M-x customize-group <RET> egg <RET>

然后将Egg git command更改为git.exe ,包括其完整路径

这有点奇怪,因为:

  • egg可以使用git生成状态缓冲区
  • git的路径在我的路径envvar
  • 消息“Aborting commit ...”来自git,我相信。

在学习如何调试elisp之后,我发现在函数nil中,应该显示提交消息限制的标记都是egg-log-msg-commit

在其他地方,这些标记包含提交消息的字符索引,但不包含。

答案 2 :(得分:1)

我只是尝试使用PsPad作为提交编辑器,但是没有用。它失败并显示相同的错误消息。这里的问题是git调用它的编辑器:

[Path]\PsPad.exe .git/COMMIT_EDITMSG

但是PsPad无法使用'/'解析该路径,这导致PsPad在存储库根文件夹中打开文件COMMIT_EDITMSG而不是在子文件夹'.git'中。 我不使用emacs / egg,所以我不能重现你的问题,但也许这些信息也有帮助。

对于PsPad用户:我通过使用这个包装器脚本调用PsPad解决了我的问题:

"C:\Programme\PsPad editor\PsPad" $(echo $1 | sed 's/\//\\/')

该代码行包含在用作git编辑器的批处理文件中。它只是将所有'/'替换为'\',这使得PsPad被称为:

[Path]\PsPad .git\COMMIT_EDITMSG

答案 3 :(得分:0)

我在Windows上使用MSYS git。设置实际git.exe的路径为我解决了这个问题。 (对我来说,正确的路径是:'c:\ Program Files \ Git \ bin \ git.exe')。

默认情况下,MSYS git会添加到路径git.cmd,这显然会猜测git.exe的位置等等。不过,我认为这会混淆与emacs的联系。

编辑:上述方法存在一个缺陷。 git.cmd显然设置了home环境变量。一些git设置是在那里写的。与emacs一起使用时,git.exe将从emacs接收环境。因此,建议确保git在从命令行执行时具有与emacs相同的主目录。

我个人通过在启动期间更改HOME环境变量在emacs配置中修复此问题,但这会产生一些副作用,例如编辑.emacs文件。