ホームページ > バックエンド開発 > PHPチュートリアル > 楽しさと利益のためにgitフック

楽しさと利益のためにgitフック

Christopher Nolan
リリース: 2025-02-23 10:29:09
オリジナル
301 人が閲覧しました

Git Hooks for Fun and Profit

コアポイント

  • gitフックは、特定のコマンドを実行するときに実行されるスクリプトであり、開発プロセスを簡素化し、効率を向上させるのに役立ちます。これらのスクリプトを使用して、コミットプロセス中にコードスタイルチェックを自動的に実行して、構文エラーのコミットを防ぐことができます。
  • Git Hookを使用して、送信されたメッセージのスペルを自動的に確認し、間違いの可能性を減らし、プロ意識を維持します。さらに、フックを使用して、コードが採用された標準を満たしていることを確認するために、フォーマットエラーを自動的にチェックできます。
  • gitフックを使用して、展開中に作曲家などのリモートリポジトリでタスクを自動的に実行することもできます。これにより、アプリケーションの依存関係を管理するプロセスが簡素化され、展開プロセスが簡素化されます。

特定のコマンドを実行する場合、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
ログイン後にコピー
ログイン後にコピー
コミット間でどのような変更が発生したかをレポートします。上記のオプションは、追加(a)、コピー(c)、修正(m)、または変更(r)が追加されたファイルのみを一時的なコミットで返します。

または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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート