Можно ли подключить git commit к сохранению на Textmate? - PullRequest
2 голосов
/ 29 ноября 2010

Одна особенность, которая сохранила меня в Eclipse, заключается в том, что каждый раз, когда вы нажимаете кнопку save, ее копия попадает в локальную историю Eclipse.Затем вы можете провести разбор по местной истории.

Тем не менее, я хотел бы использовать Textmate, так как я слышал об этом такие замечательные вещи.Я знаю, что есть запрос функции для будущей версии ... но мне интересно, нашел ли кто-то плагин, или какой-то другой способ получить эту функциональность теперь в Textmate?Я знаю, что это длинный снимок, но спрашивать никогда не повредит.

Спасибо.

ОБНОВЛЕНИЕ! (Отредактировано название вопроса, поскольку предыдущий заголовок не получилинтерес) Я просто понял, что, возможно, это может быть решением.Можно ли зацепить сохранение Textmate в коммит git?

1 Ответ

6 голосов
/ 06 января 2011

Что вам нужно, это: создать новую команду, установить «Сохранить» в «Текущий файл» (эта опция находится над текстовой областью), «Ввести» в «Весь документ» и «Вывести» в «Показать как инструмент».Совет".Теперь скопируйте приведенный ниже код в текстовую область и назначьте Command-S в качестве привязки клавиш.

#!/usr/bin/env ruby
filename = ENV["TM_FILEPATH"].split("/").last
`git add #{ENV["TM_FILEPATH"]}`
`git commit -m "#{filename}"`

Каждый раз, когда вы вводите Command-S, файл будет сохранен и передан в (уже существующий).) Git репозиторий.Если файл не был изменен, никакая фиксация не будет сделана, потому что git заблокирует фиксацию.

Ниже я расширил команду, чтобы открыть диалоговое окно для сообщения фиксации и выдать приятное предупреждение, еслирепозиторий git не найден.Вы должны быть в состоянии выяснить все остальное самостоятельно.:)

#!/usr/bin/env ruby
require ENV['TM_SUPPORT_PATH'] + '/lib/ui'

filename = ENV["TM_FILEPATH"].split("/").last
message = TextMate::UI.request_string(
    :title => "Commiting changes of #{filename}",
    :prompt => "Please enter the commit message for your changes."
)

add = `git add #{ENV["TM_FILEPATH"]} 2>&1`
commit = `git commit -m "#{message}" 2>&1`

git_answer = add + commit
unless git_answer.grep(/fatal/).empty?
  puts "Please initialize git repository first!"
end
...