Я установил для core.editor значение "mate -w". На Leopard git commit -a запускает TextMate. После ввода сообщения журнала фиксации, сохранения (Cmd-S) и выхода (Cmd-Q) TextMate, git успешно завершит операцию фиксации с использованием введенного сообщения журнала фиксации.
После обновления до Snow Leopard (Mac OS X 10.6.2) поведение изменилось. После выхода из TextMate git commit зависает (потребляет 0% ЦП) и должен быть отменен с помощью Ctrl-C.
То же самое происходит, если не настроен core-editor и для $ EDITOR установлено значение "mate" или "mate -w".
Обходной путь - закрыть только текущее окно TextMate, нажав Ctrl-W, а не Ctrl-Q после сохранения сообщения журнала фиксации, но я хотел бы понять разницу в поведении (особенно потому, что мои пальцы теперь обучены последовательность Cmd-S Cmd-Q) и получите исправление, так как многие другие могут столкнуться с этим.
IRC-канал #git (ссылка на домашнюю страницу git ) помог. Они заставили меня установить $ GIT_TRACE на 1, что показало следующую трассировку:
git commit -a
trace: built-in: git 'commit' '-a'
trace: run_command: 'sh' '-c' 'mate -w "$@"' 'mate -w' '.git/COMMIT_EDITMSG'
^C
(Кроме того, на другом Mac, на котором в прошлом работал Leopard, git commit продолжался после того, как я вышел из TextMate, но затем git не мог найти сообщение журнала коммитов и прервал коммит. Кажется, это отдельная проблема, но это намекает на то, что взаимодействие между git commit и редактором несовершенно.)