Должен ли редактор сообщений коммить запускать новый экземпляр, если я хочу, чтобы Git использовал его?
Я использую свой собственный редактор в качестве моего Git core.editor
что у меня часто уже открыто и работает. Когда я использую его для редактирования сообщения о коммите, например, после
git commit # no message specified
сообщение по умолчанию открывается в моем редакторе правильно, как COMMIT_MSG
, но коммит продолжается до того, как я что-то сделал в редакторе. Точно так же открывается автоматическое слияние MERGE_MSG
, но слияние завершается с сообщением по умолчанию, прежде чем я смог его отредактировать.
Могу ли я использовать редактор, который уже запущен для редактирования сообщений о коммитах таким образом? Требуется ли для Git-вызова редактора сообщений новый экземпляр, чтобы ответить на мои изменения?
2 ответа
git
ожидает завершения вызванной программы (с чистым состоянием выхода) и затем продолжает. В вашем случае редактор выходит напрямую (и показывает содержимое в уже существующем окне), а это не то, что git
надеется.
Чтобы решить эту проблему, ваш редактор должен выйти только после того, как вы закончили редактирование файла, предоставленного git (что, скорее всего, означает отключение присоединения к уже существующему экземпляру).
Это зависит от вашего редактора. Протокол git (и большинство других вещей, в которых используется переменная EDITOR) используется для открытия $EDITOR, указывающего на временный файл, ожидания завершения процесса редактора, а затем использования содержимого временного файла.
Например, для TextMate установка EDITOR (или git's core.editor) в '/path/to/mate -w' скажет ему подождать, пока файл не закроется, прежде чем выходить из вспомогательного процесса mate. Ваш редактор может иметь что-то подобное.