Skip to content

Commit

Permalink
dist: add commit message length checker
Browse files Browse the repository at this point in the history
  • Loading branch information
miri64 committed Dec 6, 2017
1 parent 7745060 commit 83930a0
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
1 change: 1 addition & 0 deletions dist/tools/ci/build_and_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ then

run ./dist/tools/ci/print_toolchain_versions.sh

run ./dist/tools/commit-msg/check.sh ${CI_BASE_BRANCH}
run ./dist/tools/whitespacecheck/check.sh ${CI_BASE_BRANCH}
DIFFFILTER="MR" ERROR_EXIT_CODE=0 run ./dist/tools/licenses/check.sh
DIFFFILTER="AC" run ./dist/tools/licenses/check.sh
Expand Down
48 changes: 48 additions & 0 deletions dist/tools/commit-msg/check.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/bin/sh

# Copyright 2017 Freie Universität Berlin
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.

MSG_MAX_LENGTH=50
MSG_STRETCH_LENGTH=72

# If no branch but an option is given, unset BRANCH.
# Otherwise, consume this parameter.
BRANCH="${1}"
if echo "${BRANCH}" | grep -q '^-'; then
if [ $(git rev-parse --abbrev-ref HEAD) != "master" ]; then
BRANCH="master"
else
BRANCH=""
fi
else
if [ -n "${BRANCH}" ]; then
shift 1
fi
fi

# select HEAD, if no branch is given
if [ -z "${BRANCH}" ]; then
BRANCH=$(git rev-list HEAD | tail -n 1)
fi

ERROR="$(git log \
--no-merges --pretty=format:'%s' $(git merge-base ${BRANCH} HEAD)..HEAD | \
while read msg; do
msg_length=$(echo "${msg}" | awk '{print length($0)}')
if [ ${msg_length} -gt ${MSG_MAX_LENGTH} ]; then
echo "Commit message is longer than ${MSG_MAX_LENGTH} characters:" >&2
echo " \"${msg}\"" >&2
if [ ${msg_length} -gt ${MSG_STRETCH_LENGTH} ]; then
echo "error"
fi
fi
done)"
if [ -n "${ERROR}" ]; then
exit 1
fi

0 comments on commit 83930a0

Please sign in to comment.