2016-10-05 5 views
0

は、私は、ファイルの一つは、行が含まれているVersion.cファイルであるCで書かれたコードが含まれているgitリポジトリを持ってマージするときに、ファイルの内容を更新Gitリポジトリと

#define Version_Build "0"  

私がすることができますスクリプトを持っていますこの行を見つけ、番号0を次の整数に増やします。スクリプトはPerlで書かれていますが、awkやsedと同じように簡単に使えます。

私はブランチがマスターにマージされたときにgitで自動的にスクリプトをトリガしたいと思います。私はサーバー側のフックが正しいアプローチだと思った。しかし、これが最良のアプローチであるかどうかは分かりません。例えば

、それはgitのコミットまたはgitのmasterブランチ上で実行するために追加が必要ですか?それが最良のアプローチであると仮定すると、適切な種類のフックを推奨できますか?あるいは同じ問題を解決する良い方法がありますか?

答えて

1

git mergeによって呼び出すことができる1つのフック、post-merge、があります。しかし、それは地元のレポで働く。

あなたはGitが変更を追跡したい場合は、はい、あなたはそれを追加してコミットする必要があります。これは遠隔レポで行なわれるのが適切ではない。このフックで

現在のブランチがmasterであれば、あなたは確認することができます。はいの場合は、変更して追加してコミットします。そうでない場合は、何もしないでください。

git mergeのオプションは、一度展開するとこのフックをバイパスすることはできません。これは時々迷惑をかける可能性があります。フックを無効にしたい場合は、その作業を行うためのいくつかの方法があります。フックの中で到達可能なフラグ変数を設定し、その値をチェックしてください。あなたはgit mergeの前に環境変数をエクスポートし、後でそれを設定解除することができます。または、自分で定義した設定キーを設定することもできます。たとえば、git config my.post-merge trueまたはgit config my.post-merge falseです。フックで、git config --get my.post-mergeの値を確認します。別の方法は、mv .git/hooks/post-merge .git/hooks/post-mergedのようにフックの名前を変更することです。必要なときに戻してください。

関連する問題