Skip to content

Commit 0a36fbe

Browse files
committed
Merge branch 'feature/git-hooks' into develop
2 parents 7a0ff8d + ad9aa31 commit 0a36fbe

File tree

3 files changed

+27
-29
lines changed

3 files changed

+27
-29
lines changed

git/hooks/pre-commit

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,20 @@ trap 'echo "${BASH_SOURCE[0]}: line ${LINENO}: status ${?}: user ${USER}: func $
33
set -o errexit
44
set -o errtrace
55

6-
echo "[INFO] pre-commit hook"
7-
86
source ~/properties/git/hooks/.env
97
HOOKS_DIR=$(git rev-parse --git-path hooks)
108
REPO_ROOT=$(git rev-parse --show-toplevel)
11-
echo "[INFO] Environment: ${ENV_NAME}"
12-
echo "[INFO] Git hooks dir: ${HOOKS_DIR}"
13-
echo "[INFO] Repository root: ${REPO_ROOT}"
9+
echo "[pre-commit] [INFO] environment: ${ENV_NAME}"
10+
echo "[pre-commit] [INFO] git hooks dir: ${HOOKS_DIR}"
11+
echo "[pre-commit] [INFO] repository root: ${REPO_ROOT}"
1412

1513
######################################################################
1614

1715
### block specific keywords
1816
BLOCKED_KEYWORDS="$(cat ${HOOKS_DIR}/blocked_keywords.txt)"
1917
for KEYWORD in ${BLOCKED_KEYWORDS}; do
2018
if git diff --cached | grep ${KEYWORD}; then
21-
echo "[ERROR] Commit contains a blocked keyword: ${KEYWORD}"
19+
echo "[pre-commit] [ERROR] Commit contains a blocked keyword: ${KEYWORD}"
2220
exit 1
2321
fi
2422
done
@@ -27,33 +25,31 @@ done
2725

2826
### signing commits
2927

30-
CURRENT_USER_NAME="$(git config user.name)"
31-
CURRENT_USER_EMAIL="$(git config user.email)"
32-
CURRENT_GPG_SIGNING_KEY="$(git config user.signingkey)"
28+
GPG_SIGNING_KEY="$(git config user.signingkey)"
3329

3430
### check if the current gpg signing key exists
35-
if [ -z "${CURRENT_GPG_SIGNING_KEY}" ]; then
36-
echo "[ERROR] No GPG key set for signing commits."
31+
echo "[pre-commit] [INFO] Current GPG signing key: ${GPG_SIGNING_KEY}"
32+
if [ -z "${GPG_SIGNING_KEY}" ]; then
33+
echo "[pre-commit] [ERROR] No GPG key set for signing commits."
3734
exit 1
3835
fi
39-
echo "[pre-commit] [INFO] Current GPG signing key: ${CURRENT_GPG_SIGNING_KEY}"
4036

4137
### check if the current user name and email match the env config
42-
if [ "${CURRENT_USER_NAME}" != "${ENV_USER_NAME}" ] ||
43-
[ "${CURRENT_USER_EMAIL}" != "${ENV_USER_EMAIL}" ]; then
44-
echo "[ERROR] Commit rejected. Your user name or email is incorrect."
38+
echo "[pre-commit] [INFO] Current user name: ${GIT_AUTHOR_NAME}"
39+
echo "[pre-commit] [INFO] Current user email: ${GIT_AUTHOR_EMAIL}"
40+
if [ "${GIT_AUTHOR_NAME}" != "${ENV_USER_NAME}" ] ||
41+
[ "${GIT_AUTHOR_EMAIL}" != "${ENV_USER_EMAIL}" ]; then
42+
echo "[pre-commit] [ERROR] Commit rejected. Your user name or email is incorrect."
4543
exit 1
4644
fi
47-
echo "[pre-commit] [INFO] Current user name: ${CURRENT_USER_NAME}"
48-
echo "[pre-commit] [INFO] Current user email: ${CURRENT_USER_EMAIL}"
4945

5046
### check if the current gpg signing key matches the env config
5147
GPG_USER_INFO="$(gpg --list-keys --with-colons "${ENV_GPG_SIGNING_KEY}" | grep "^uid:" | head -n 1 | cut -d: -f10)"
5248
GPG_USER_NAME="${GPG_USER_INFO% <*}"
5349
GPG_USER_EMAIL="${GPG_USER_INFO#*<}" && GPG_USER_EMAIL="${GPG_USER_EMAIL%>}"
54-
if [ "${CURRENT_USER_NAME}" != "${GPG_USER_NAME}" ] ||
55-
[ "${CURRENT_USER_EMAIL}" != "${GPG_USER_EMAIL}" ]; then
56-
echo "[ERROR] Git config user name or email doesn't match the GPG key's user name or email."
50+
if [ "${GIT_AUTHOR_NAME}" != "${GPG_USER_NAME}" ] ||
51+
[ "${GIT_AUTHOR_EMAIL}" != "${GPG_USER_EMAIL}" ]; then
52+
echo "[pre-commit] [ERROR] Git config user name or email doesn't match the GPG key's user name or email."
5753
exit 1
5854
fi
5955
echo "[pre-commit] [INFO] GPG signing key matches the environment config."

git/hooks/pre-push

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@ trap 'echo "${BASH_SOURCE[0]}: line ${LINENO}: status ${?}: user ${USER}: func $
33
set -o errexit
44
set -o errtrace
55

6-
echo "[INFO] pre-push hook"
7-
86
source ~/properties/git/hooks/.env
97
HOOKS_DIR=$(git rev-parse --git-path hooks)
108
REPO_ROOT=$(git rev-parse --show-toplevel)
11-
echo "[INFO] Environment: ${ENV_NAME}"
12-
echo "[INFO] Git hooks dir: ${HOOKS_DIR}"
13-
echo "[INFO] Repository root: ${REPO_ROOT}"
9+
echo "[pre-push] [INFO] environment: ${ENV_NAME}"
10+
echo "[pre-push] [INFO] git hooks dir: ${HOOKS_DIR}"
11+
echo "[pre-push] [INFO] repository root: ${REPO_ROOT}"
1412

1513
######################################################################
1614

@@ -22,7 +20,7 @@ if [ -z "$(git ls-remote --heads origin)" ]; then
2220
else
2321
COMMITS_TO_PUSH="$(git log @{u}.. --pretty=format:"%H")"
2422
fi
25-
echo "[INFO] Commits to push:"
23+
echo "[pre-push] [INFO] Commits to push:"
2624
echo "${COMMITS_TO_PUSH}"
2725

2826
######################################################################
@@ -40,7 +38,7 @@ for COMMIT in ${COMMITS_TO_PUSH}; do
4038
COMMIT_USER_EMAIL="$(git show -s --pretty=format:%aE ${COMMIT})"
4139
if [ "${COMMIT_USER_NAME}" != "${ENV_USER_NAME}" ] ||
4240
[ "${COMMIT_USER_EMAIL}" != "${ENV_USER_EMAIL}" ]; then
43-
echo "[ERROR] Push rejected. Your user name or email is incorrect."
41+
echo "[pre-push] [ERROR] Push rejected. Your user name or email is incorrect."
4442
exit 1
4543
fi
4644

@@ -50,14 +48,16 @@ for COMMIT in ${COMMITS_TO_PUSH}; do
5048
COMMIT_GPG_USER_NAME="${COMMIT_GPG_USER_INFO% <*}"
5149
COMMIT_GPG_USER_EMAIL="${COMMIT_GPG_USER_INFO#*<}" && COMMIT_GPG_USER_EMAIL="${COMMIT_GPG_USER_EMAIL%>}"
5250
if [ "${COMMIT_GPG_SIGNING_KEY}" != "${ENV_GPG_SIGNING_KEY}" ]; then
53-
echo "[ERROR] Commit ${COMMIT} is signed with a different GPG key."
51+
echo "[pre-push] [ERROR] Commit ${COMMIT} is signed with a different GPG key."
5452
exit 1
5553
fi
5654
if [ "${COMMIT_GPG_USER_NAME}" != "${ENV_USER_NAME}" ] ||
5755
[ "${COMMIT_GPG_USER_EMAIL}" != "${ENV_USER_EMAIL}" ]; then
58-
echo "[ERROR] Push rejected. Your GPG user name or email is incorrect."
56+
echo "[pre-push] [ERROR] Push rejected. Your GPG user name or email is incorrect."
5957
exit 1
6058
fi
6159
done
6260

61+
######################################################################
62+
6363
exit 0

git/hooks/prepare-commit-msg

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,6 @@ if echo "${COMMIT_MESSAGE}" | grep -q -E "\s{2,}"; then
4747
exit 1
4848
fi
4949

50+
######################################################################
51+
5052
exit 0

0 commit comments

Comments
 (0)