#!/usr/bin/env bash # Copyright © 2023 OpenIMSDK. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # ============================================================================== # # Store this file as .git/hooks/commit-msg in your repository in order to # enforce checking for proper commit message format before actual commits. # You may need to make the script executable by 'chmod +x .git/hooks/commit-msg'. # commit-msg use go-gitlint tool, install go-gitlint via `go get github.com/llorllale/go-gitlint/cmd/go-gitlint` # go-gitlint --msg-file="$1" # An example hook script to check the commit log message. # Called by "git commit" with one argument, the name of the file # that has the commit message. The hook should exit with non-zero # status after issuing an appropriate message if it wants to stop the # commit. The hook is allowed to edit the commit message file. YELLOW="\e[93m" GREEN="\e[32m" RED="\e[31m" ENDCOLOR="\e[0m" printMessage() { printf "${YELLOW}OpenIM : $1${ENDCOLOR}\n" } printSuccess() { printf "${GREEN}OpenIM : $1${ENDCOLOR}\n" } printError() { printf "${RED}OpenIM : $1${ENDCOLOR}\n" } printMessage "Running the OpenIM commit-msg hook." # This example catches duplicate Signed-off-by lines. test "" = "$(grep '^Signed-off-by: ' "$1" | sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { echo >&2 Duplicate Signed-off-by lines. exit 1 } ./tools/go-gitlint \ --msg-file=$1 \ --subject-regex="^(build|chore|ci|docs|feat|feature|fix|perf|refactor|revert|style|test)(.*)?:\s?.*" \ --subject-maxlen=150 \ --subject-minlen=10 \ --body-regex=".*" \ --max-parents=1 if [ $? -ne 0 ] then printError "Please fix your commit message to match OpenIM coding standards" printError "https://OpenIM.gitbook.io/docs/essential-documentation/contribute-to-OpenIM/software-contributions/submitting-code/code-submission-guidelines#commit-message-guidelines" exit 1 fi