diff --git a/75_MSG.pm b/75_MSG.pm index 0953828..0142d84 100755 --- a/75_MSG.pm +++ b/75_MSG.pm @@ -1244,7 +1244,7 @@ m/^@?([A-Za-z0-9._]+):([A-Za-z0-9._\-\/@+]*):?([A-Za-z0-9._\-\/@+]*)$/ foreach my $gatewayDev ( split /,/, $gatewayDevOr ) { if ( $gatewayDev =~ -m/^@?([A-Za-z0-9._]+):([A-Za-z0-9._\-\/@+]*):?([A-Za-z0-9._\-\/@+]*)$/ +m/^@?([A-Za-z0-9._]+):([A-Za-z0-9._\-\/@+\#]*):?([A-Za-z0-9._\-\/@+]*)$/ ) { $gatewayDev = $1; diff --git a/hooks/commit-msg b/hooks/commit-msg new file mode 100755 index 0000000..ae9eb2c --- /dev/null +++ b/hooks/commit-msg @@ -0,0 +1,36 @@ +#!/bin/sh +# +# 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. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +commit_msg=$(cat "${1:?Missing commit message file}") + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} + +if ! echo "$commit_msg" | grep -Eq "^(build|chore|ci|docs|feat|feat!|fix|perf|refactor|revert|style|test)(\(.+\))?: .*$" ; then + + echo "Invalid commit message" + + exit 1 + +fi + +echo "Commit message is valid!" diff --git a/hooks/post-commit b/hooks/post-commit new file mode 100755 index 0000000..bf571f5 --- /dev/null +++ b/hooks/post-commit @@ -0,0 +1,18 @@ +#!/bin/bash +set -eu + +# destination of the final changelog file +OUTPUT_FILE=CHANGELOG.md + +# generate the changelog +git --no-pager log --no-merges --format="### %s%d%n>%aD%n%n>Author: %aN (%aE)%n%n>Commiter: %cN (%cE)%n%n%b%n%N%n" > $OUTPUT_FILE + +# prevent recursion! +# since a 'commit --amend' will trigger the post-commit script again +# we have to check if the changelog file has changed or not +res=$(git status --porcelain | grep -c ".\$OUTPUT_FILE$") +if [ "$res" -gt 0 ]; then + git add $OUTPUT_FILE + git commit --amend + echo "Populated Changelog in $OUTPUT_FILE" +fi