皆さん、おはようございます、githubの上のJavaプロジェクトのために、私は「問題」のようにgithubの機能を使用する必要があります。この目的のために、すべての「コミット」は、少なくとも1つの出口に含まれている必要があります。デッドエンドのコミットを行うことから、私のチームを防ぐために、私はので、各コミットする前に確認する必要があります。GitHooksはこの仕事に最適なツールです。のみ、Windows互換のスクリプトを実装します。
Linux環境では、私はコミットを中断する方法を知っているが、私はそれが状態を確認することができますコミットの内容を取得する方法がわかりません。
一般的には、Gitのフックは、それらのバイパスユーザーことができるので、この場合の良いツールではないgit commit --no-verify
(他の種々の技術と共に)。ユーザーがそれを変更したり、削除することができますので、ユーザーのシステム上のものは、効果的な制御ではありません。
通常、この動作は、サーバー側で実行されます。いくつかのケースでは、実行することができますpre-receive
これらの事を確認するためのフックを、しかしこれはGitHubの上では不可能です。代わりに、あなたはあなたが他のチェックに加えて、あなたのCIシステムでこれを確認する必要があります。
あなたはそう、2つの引数は(通常はメインブランチどこのようなシェルでそれを行うためのスクリプトを書くことができますmaster
)とプル要求のためにHEADをコミットします。
#!/bin/sh -e
git rev-list "$1".."$2" | xargs -L1 sh -c 'git log -1 --format=%b "$@" | grep -E "#[0-9]+"'
それは、パターンをチェックする#[0-9]+
メッセージを表示して終了のゼロ以外のコミットでそれが一致しない場合。Windows上でのGitのすべてのバージョンは、いくつかのシェルの実装が付属していますので、あなたは、bashやshをして、それを呼び出す場合、このようなスクリプトは、同様に、Windows上で動作します。