I have core.editor set to "mate -w". On Leopard, git commit -a starts TextMate. After entering a commit log message, saving (Cmd-S), and quitting (Cmd-Q) TextMate, git would successfully complete the commit operation using the entered commit log message.
Since upgrading to Snow Leopard (Mac OS X 10.6.2), the behaviour has changed. After quitting TextMate, git commit hangs (consuming 0% CPU) and needs to be cancelled with Ctrl-C.
The same happens if core-editor is not set and $EDITOR is set to "mate" or "mate -w".
A workaround is to quit just the current TextMate window by hitting Ctrl-W rather than Ctrl-Q after saving the commit log message, but I'd like to understand the difference in behaviour (especially as my fingers are now trained with the Cmd-S Cmd-Q sequence) and get a fix as many other people are likely to run into this.
The #git IRC channel (referenced on the git home page) was some help. They got me to set $GIT_TRACE to 1 which showed the following trace:
git commit -a
trace: built-in: git 'commit' '-a'
trace: run_command: 'sh' '-c' 'mate -w "$@"' 'mate -w' '.git/COMMIT_EDITMSG'
^C
(Also, on another Mac running Leopard in the past, git commit used to continue after I quitted TextMate, but then git would not find the commit log message and it would abort the commit. This seems to be a distinct problem, but it hints that the interaction between git commit and the editor is imperfect.)