新規インストールせずにgitフックでコミットメッセージとブランチ名を確認する方法


序章



こんにちは、みんな !
私はテクニカル リーダーで、チームのプル リクエスト/マージ リクエストのチェックを担当しています.また、リリースごとにリリース ノート (CHANGELOG.md) を作成します.
したがって、私の最初の問題は、開発者のコ​​ミットを解決することでした.開発者には常に何らかの間違いがあるか、コミット メッセージにエラーがあるか (正しい形式ではない)、またはブランチ名にエラーがあります.
検索したところ、さまざまな解決策が見つかりました.それらの多くは、ノード (npm ライブラリ) や php コンポーザー ライブラリなどの外部ソフトウェアを使用する必要があります.また、プロジェクトは、Android、PHP、.NET などのさまざまなテクノロジにあります.

見つけたものをすべてチェックした後、外部依存関係のないすべての環境で機能するソリューションを作成しました.

解決策は本当に簡単です.
これらの簡単な手順に従う必要があります

手順:


  • .git-hooks フォルダーをプロジェクトのルート ディレクトリに作成します.これは、既に .git フォルダーがあるのと同じレベルです
  • このフォルダーに 2 つのファイルを作成します: pre-commit と prepare-commit-msg (これら 2 つのファイルには拡張子がありません)
  • 正しいコードを各ファイルに入れます (これらの手順の下に追加します)
  • コマンド ラインで、プロジェクトのメイン フォルダー (.git-hooks の 1 つ上のレベル) で次のコマンドを実行します. git config core.hooksPath .git-hooks
  • 準備完了!

  • コード



    コミット前のファイル コード:

    #!/bin/bash
    
    BRANCH=$(git rev-parse --abbrev-ref HEAD)
    REGEX="^(dev|release)-([0-9]+)-q([0-9]+)\.([0-9]+)\.(.+)$"
    
    if ! [[ $BRANCH =~ $REGEX ]]; then
      echo "Your commit was rejected due to branching name"
      echo "Please rename your branch with '(dev|release)-YYYY-qX.X.X' syntax"
      exit 1
    fi
    


    prepare-commit-msg ファイル コード:

    #!/bin/bash
    
    MESSAGE=$(cat $1) 
    COMMITFORMAT="^(feat|fix|docs|style|refactor|test|chore|perf|other)(\((.*)\))?: #([0-9]+) (.*)$"
    
    if ! [[ "$MESSAGE" =~ $COMMITFORMAT ]]; then
      echo "Your commit was rejected due to the commit message. Skipping..." 
      echo ""
      echo "Please use the following format:"
      echo "feat: #1234 feature example comment"
      echo "fix(ui): #4321 bugfix example comment"
      echo ""
      echo "More details on COMMITS.md"
      exit 1
    fi
    


    必要に応じて編集できます.

    説明



    ファイルの事前コミット: ブランチ名を確認します.
    私の場合、次のような形式のみを使用するようにフィルタリングします.
    dev-YYYY-qX.X.X
    リリース YYYY-qX.X.X
    YYYY は年、X.X.X はバージョンです.ここでは四半期番号を使用します.
    正規表現を使用してそれを変更し、必要なものを配置できます;)

    ファイル prepare-commit-msg: コミット メッセージを確認します.
    この場合、次の形式を使用します.
    https://www.conventionalcommits.org/en/v1.0.0/
    http://karma-runner.github.io/1.0/dev/git-commit-msg.html

    もちろん、必要に応じて変更できます.

    最後に、コマンド git config core.hooksPath .git-hooks は、新しいパスを使用するようにローカルの git フック構成を変更します.