新規インストールせずにgitフックでコミットメッセージとブランチ名を確認する方法
4296 ワード
序章
こんにちは、みんな !
私はテクニカル リーダーで、チームのプル リクエスト/マージ リクエストのチェックを担当しています.また、リリースごとにリリース ノート (CHANGELOG.md) を作成します.
したがって、私の最初の問題は、開発者のコミットを解決することでした.開発者には常に何らかの間違いがあるか、コミット メッセージにエラーがあるか (正しい形式ではない)、またはブランチ名にエラーがあります.
検索したところ、さまざまな解決策が見つかりました.それらの多くは、ノード (npm ライブラリ) や php コンポーザー ライブラリなどの外部ソフトウェアを使用する必要があります.また、プロジェクトは、Android、PHP、.NET などのさまざまなテクノロジにあります.
見つけたものをすべてチェックした後、外部依存関係のないすべての環境で機能するソリューションを作成しました.
解決策は本当に簡単です.
これらの簡単な手順に従う必要があります
手順:
コード
コミット前のファイル コード:
#!/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 フック構成を変更します.
Reference
この問題について(新規インストールせずにgitフックでコミットメッセージとブランチ名を確認する方法), 我々は、より多くの情報をここで見つけました https://dev.to/anibalardid/how-to-check-commit-message-and-branch-name-with-git-hooks-without-any-new-installation-n34テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol