2012-03-16 13 views
6

私たちは、GIT用の素晴らしいプリコミットフックと素晴らしいコミットメッセージを持っています。 pre-commitフックは構文検証を行い、commit-msgは他のビジネスロジックを実行します。それはすべてうまくいく。GITのコマンドラインから制御された条件付きプリコミットフック:可能ですか?

しかし、私はコーディング標準の検証をプリコミットフックに追加したいと思います。実際、すでに追加されています。しかし、私は開発者がコーディング標準と厳密に一致するように強制したくありませんが、デフォルトでは標準のコードを検証したいと思いますが、コーディング標準の検証を渡したい場合は、コミット中にパラメータを追加して渡します。

それが中に与えられた任意のコマンドラインパラメータは、プリコミットフックで標準の検証をコーディングスキップするために、プリコミットフックレベルでgitのためにコミット解釈/キャプチャすることが可能です(オプション?)

または、特定の部分文字列のコミットメッセージを分析することによって、事前コミットメッセージフックでのみ可能ですか?

git pre-commitフック(または他のgitフック)を使用してコマンドラインで制御された条件付きコードを作成する方法については、ベストプラクティスをお伝えください。スクリプト内の

STANDARDS=no git commit 

、その後(バッシュの例が、あなたはあなたのフックがであるどんな言語でのenv VARSを読むことができる):これを行うの

答えて

10

簡単な方法は、単に環境変数を使用することです:

if [ "$STANDARDS" != "no" ]; then 
    ...check for code standards... 
fi 

Gitは通常ので、「コマンドラインオプション」ラでそれをやろうと、各フックにman githooksに記載されているものを超えて情報を渡しませんなどは動作しません。

3

あなたが行うことができるはず、@Amberが言ったことに追加するには:

STANDARDS=no git commit -m "committing" 

と環境変数を参照して決定を下すだろう、適切な事前コミットフックを持っています。

あり--no-verifyはもちろんですが、私はあなたが全体の事前コミットスキップしたくないと仮定します

-n
--no-検証

このオプションは、バイパス事前コミットとコミット - msgフック。 githooks(5)も参照してください。

関連する問題