2010-11-29 11 views
2

私にEclipseユーザーを残してくれた機能の1つは、saveを押すたびにそのコピーがEclipseのローカル履歴に書き込まれるということです。それでは、あなたは地元の歴史を知ることができます。git commitをTextmateの保存にフックすることはできますか?

まだ、私はTextmateを使ってみたいと思います。私は将来のバージョンのためにfeature requestがあることを知っています...しかし、誰かがプラグインを見つけたか、またはこの機能をTextmateに今すぐ追加するための他の方法があるかどうか疑問に思っていますか?私はそれがロングショットだが、頼むことは決してないことを知っている。

ありがとうございます。

UPDATE! (前のタイトルは興味がないので編集しました) これはおそらく解決策であると私は気付きました。 TextMateをgit commitにフックすることは可能ですか?

+1

どのようにTextMateに保存しますか?可能なハック解決策の1つは、ファイルを保存するバンドルエントリを作成してからコミットし、コマンドラインをこのバンドルエントリに再バインドすることです。しかし、「ファイル」>「保存」を使用して保存すると、これはうまく行かないでしょう。これが参考になる場合は、lmkと答えてください。 –

+0

ありがとうジョシュ、それは素晴らしいだろう! – joedevon

+0

も参照してください[git auto-commit](http://stackoverflow.com/questions/420143/making-git-auto-commit) –

答えて

6

新しいコマンドを作成し、 "保存"を "現在のファイル"(このオプションはテキスト領域の上)に設定し、 "入力"を "ドキュメント全体"に、 "出力"を "ツールヒント "をクリックします。以下のコードをテキスト領域にコピーし、Command-Sをコマンドのキーバインディングとして割り当てます。

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

コマンドを入力するたびに、ファイルが保存され、(すでに存在する)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 
+0

"コマンドが見つかりませんgit add etc ..." – joedevon

+0

@joedevon git inあなたは$ PATH変数ですか? (ターミナルで "echo $ PATH"を試してください。)そうであれば、それはすべてのプログラムに対してロードされますか?すなわち、.loginファイルのようなログインフックにはロードされませんか? (TextMateはそのファイルを使用しません) –

+0

忘れてしまったのは、$ PATHにgitが入っていて、それが完全に動作していて、Command-Sにポップアップを追加し、Command-Shift-Sに非ポップアップを追加しました。 – joedevon

関連する問題