test: add hooks
hooks for commit test and create changelog
This commit is contained in:
		| @@ -1,2 +1,2 @@ | |||||||
| UPD 2022-07-21_19:43:48 49634 FHEM/73_GardenaSmartBridge.pm | UPD 2023-01-10_09:29:31 49634 FHEM/73_GardenaSmartBridge.pm | ||||||
| UPD 2022-09-18_08:52:23 122934 FHEM/74_GardenaSmartDevice.pm | UPD 2023-01-10_09:29:31 122934 FHEM/74_GardenaSmartDevice.pm | ||||||
|   | |||||||
							
								
								
									
										36
									
								
								hooks/commit-msg
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										36
									
								
								hooks/commit-msg
									
									
									
									
									
										Executable file
									
								
							| @@ -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!" | ||||||
							
								
								
									
										18
									
								
								hooks/post-commit
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										18
									
								
								hooks/post-commit
									
									
									
									
									
										Executable file
									
								
							| @@ -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 | ||||||
		Reference in New Issue
	
	Block a user