我将core.editor设置为“mate -w”。在Leopard上,git commit -a启动TextMate。输入提交日志消息后,保存(Cmd-S)和退出(Cmd-Q)TextMate,git将使用输入的提交日志消息成功完成提交操作。当TextMate退出时,Mac上的git commit -a挂起
自升级到Snow Leopard(Mac OS X 10.6.2)后,行为发生了变化。退出TextMate之后,git commit会挂起(消耗0%的CPU)并需要使用Ctrl-C取消。
如果未设置核心编辑器并且$ EDITOR设置为“mate”或“mate -w”,则会发生同样的情况。
一种解决方法是按Ctrl-W,而不是按Ctrl-Q保存提交日志信息后退出只是当前TextMate的窗口,但我想了解行为的差异(尤其是我的手指现在正在受训与Cmd-S Cmd-Q序列一起),并得到解决办法,因为许多其他人可能会遇到这种情况。
#git IRC频道(参考git home page)是一些帮助。他们让我设置$ GIT_TRACE为1,这显示出下面的跟踪:
git commit -a
trace: built-in: git 'commit' '-a'
trace: run_command: 'sh' '-c' 'mate -w "[email protected]"' 'mate -w' '.git/COMMIT_EDITMSG'
^C
(另外,在过去的另一个运行Leopard的Mac,git的承诺来继续我辞去的TextMate后,但随后的git不会发现提交日志消息,它会中止提交。这似乎是一个明显的问题,但它暗示git commit和编辑器之间的交互是不完美的。)
谢谢。我已经发布到指出这个问题的TextMate邮件列表。 – 2009-11-18 16:18:42
读者请注意:这个答案并没有真正回答这个问题,所以请随时添加一个完整的答案! – 2009-11-19 11:01:15