2016-08-17 5 views
0

私はgitフックを見ていますが、これを理解することができませんでした:ユーザがgitリポジトリにファイルをコミットすると、リポジトリ内の別のファイルを自動的に更新し、コミットメッセージの内容に基づいていくつかのコマンドを実行することもできます。これを行う方法はありますか? pre-commit gitフックは、コミットメッセージが生成される前に実行されているようです。コミットする前に、gitが何かをするようにプログラムするには?

答えて

0

あなたはです。これを行うには、prepare-commit-msgフックを使用してください...しかし、しないでください。これは難しく、エラーを起こしやすいですし、Gitをよく知っている人には驚くかもしれませんが、あなたの特定のプロジェクトには慣れていません。 (それは誰かがあなた自身かもしれません、数年後:私はこれが私に起こったのでこれを知っています:-) Gitではなく、基本的に同じ問題:短期間のハックを思いついて、私が自分の短期間のハックに遭遇したときだけショックを受けました)

代わりに、git commitの実行を含め、やりたいことをすべて実行する小さなスクリプトを書いて、将来を離れる小さなスクリプトをどのように動かすかについてのメンテナー(おそらくあなた自身)の指示。プロジェクトのGitリポジトリにそのスクリプトを含めれば、誰もがそれを持つことができます。

+0

'git commit'を実行するスクリプトを作成します。これは興味深い考えです。私はSourceTreeのようなGitのGUIアプリケーションでこれを使うことができるので、これがオプションかどうかわかりません。 'prepare-commit-msg'スクリプトを作成するのが悪い考えです。なぜなら、それが将来どのように働くのか忘れてしまうと、それは問題になるかもしれないということでしょうか? – Jason

+0

prepare-commit-msgスクリプトが実行されるまでに、Gitの少なくともいくつかのバージョンでは、どのファイルがコミットされているかがすでに決まっているため、ファイルのセットを変更するには、インデックスを変更し、* new * commit (あなたのスクリプトで再帰を無効にして)、外部コミットが失敗するようにします。私はこの作業を一度行いましたが、それが期待していても使用するのは紛らわしく、 'git commit --amend'でうまく動作しませんでした。それ以来、初期のフックが実行された後にGitがインデックスを再チェックするように修正されたため、混乱は少なくなりましたが、やはり手間がかかりました。一般的には、 'git add -p'を実行すると悪い結果を出します。 – torek

関連する問題