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 2022-09-18_08:52:23 122934 FHEM/74_GardenaSmartDevice.pm | ||||
| UPD 2023-01-10_09:29:31 49634 FHEM/73_GardenaSmartBridge.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