コアポイント
特定のコマンドを実行する場合、gitは適切なフックスクリプトを.git/hooks
ディレクトリを検索し、見つかった場合はそれらを実行します。サンプルスクリプトの小さなセットが見つかります(.sample
プレフィックスを削除して実行ビットを設定するように名前を変更してアクティブにすることができます)。この記事では、いくつかのフックを使用して開発を簡素化し、効率を向上させることをお勧めします。 githooks(5)
コードスタイルのチェック
構文エラーを使用してコードを送信することはお勧めできません。コミットプロセス中にコードスタイルのチェックを自動的に実行できる場合、コードの品質が大幅に向上します。各コミットの前にコードスタイルのチェックを手動で実行すると、自動化することで忘れられなくなります。次のシェルコードは、(.git/hooks/pre-commit
フックコードが既に存在する場合は、追加できます)として保存できます。そのため、各コミットで自動チェックがトリガーされます。
pre-commit
#!/bin/bash git diff --cached --name-status --diff-filter=ACMR | while read STATUS FILE; do if [[ "$FILE" =~ ^.+(php|inc)$ ]]; then php -l "$FILE" 1>/dev/null if [[ $? -ne 0 ]]; then echo "Aborting commit due to files with syntax errors" >&2 exit 1 fi fi done
またはgit diff
拡張機能を備えたファイルは、コードスタイルのチェックのターゲットによって使用され、チェックの障害により、スクリプトがゼロ以外の返品コードで終了し、コミット自体を中止します。 .php
.inc
専門的な提出が重要です。 Git Hookを使用して、提出されたメッセージのスペルを自動的にチェックして、厄介なスペルエラーを避けます。次のコードは、
(または追加)として保存できます。エラーがある場合は、を実行してすぐにコミットメッセージを修正できます。 .git/hooks/post-commit
git commit --amend
また、プロジェクトのソースコードから抽出された識別子を使用して、補足辞書(
#!/bin/bash ASPELL=$(which aspell) if [[ $? -ne 0 ]]; then echo "Aspell not installed – unable to check spelling" >&2 exit fi AWK=$(which awk) if [[ $? -ne 0 ]]; then echo "Awk not installed – unable to filter spelling errors" >&2 exit fi # ... (rest of the spell-check code)
post-checkout
--extra-dicts
コードの仕様を確認
Git Hookを使用して、採用したコード仕様にコードが準拠していることを自動的に確認できます。次のコードをpost-commit
フック(.git/hooks/post-commit
)として使用して、フォーマット競合を自動的に確認できます。
#!/bin/bash git diff --cached --name-status --diff-filter=ACMR | while read STATUS FILE; do if [[ "$FILE" =~ ^.+(php|inc)$ ]]; then php -l "$FILE" 1>/dev/null if [[ $? -ne 0 ]]; then echo "Aborting commit due to files with syntax errors" >&2 exit 1 fi fi done
オリジナルの実行Composer < gitフックを使用して、展開中に作曲家を自動的に実行できます。次のコードは、コンポーザーを自動的に実行する
フックのリモートリポジトリのファイルに配置できます。 .git/hooks/post-receive
post-receive
#!/bin/bash ASPELL=$(which aspell) if [[ $? -ne 0 ]]; then echo "Aspell not installed – unable to check spelling" >&2 exit fi AWK=$(which awk) if [[ $? -ne 0 ]]; then echo "Awk not installed – unable to filter spelling errors" >&2 exit fi # ... (rest of the spell-check code)
この記事では、アプリケーション開発プロセスを簡素化し、効率を向上させるGitフックを共有しています。
gitフックfaq(記事が長すぎて擬似オリジナルの目標と一致しないため、FAQセクションはここで省略されています。必要に応じて保持または削除できます。)
以上が楽しさと利益のためにgitフックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。