web-dev-qa-db-ja.com

複数のプリコミットフックを処理する

複数のpre-commitフックスクリプトを使用する必要があります。それらを処理する方法がわからない。それらすべてを1つの大きな事前コミットスクリプトに組み合わせる必要がありますか?そうでない場合、複数の事前コミットスクリプトを処理する方法は?

25
karthik101

それらすべてを1つの大きな事前コミットスクリプトに組み合わせる必要がありますか?

はい、いいえ:事前コミットスクリプトは1つしか宣言できないため、このスクリプトは次のことを担当する必要があります。

  • 実際のpre-commitスクリプトを呼び出す
  • それらのスクリプトが呼び出される順序を選択しました。

そう:

  • 1つの事前コミットスクリプト
  • 複数のスクリプトを呼び出し、それぞれがコミットの続行を許可するかどうか(終了ステータスを含む)。
26
VonC

他のスクリプト(サブフック)のみを呼び出す委任スクリプトを使用できます。

https://Gist.github.com/carlos-jenkins/89da9dcf9e0d528ac978311938aade4

使用法:

構築システムを作成して、Gitフックディレクトリに、参加するフックの名前を使用してこのスクリプトへのシンボリックリンクを作成します。

たとえば、pre-commitです。

このフックは、アルファベット順に、参加しているフックタイプにちなんで.dが付いたフォルダの下にあるすべての実行可能ファイル(サブフック)を実行します。

たとえば、pre-commit.dです。

どのように見えるか:

.git/hooks/
 |_ pre-commit -> ../../tools/git/multihooks.py
 |_ pre-commit.d/
    |_ 01-cpp_coding_standard
    |_ 02-python_coding_standard
    |_ 03-something_else

これにはPython3が必要ですが、他のテクノロジーを使用して同様の機能を提供することもできます。

19
Havok