utils: hooks: pre-push: Catch commits without committer's SoB
Improve the pre-push git hook script to reject commits without the committer's Signed-off-by line. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
parent
7206035ee6
commit
fcfbec801b
1 changed files with 27 additions and 4 deletions
|
@ -32,12 +32,35 @@ do
|
||||||
range="$remote_sha..$local_sha"
|
range="$remote_sha..$local_sha"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
# Find invalid commits.
|
# Find invalid commits.
|
||||||
commit=$(git rev-list -n 1 --grep '^---' "$range")
|
#
|
||||||
if [ -n "$commit" ]
|
errors=0
|
||||||
|
for commit in $(git rev-list "$range")
|
||||||
|
do
|
||||||
|
msg=$(git cat-file commit "$commit")
|
||||||
|
|
||||||
|
# 1. The commit message shall not contain a local changelog.
|
||||||
|
if echo "$msg" | grep -q '^--- *$'
|
||||||
|
then
|
||||||
|
echo >&2 "Found local changelog in commit $commit"
|
||||||
|
errors=$((errors+1))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. The commit message shall have a Signed-off-by line
|
||||||
|
# corresponding the committer.
|
||||||
|
committer=$(echo "$msg" | grep '^committer ' | head -1 | \
|
||||||
|
cut -d ' ' -f 2- | rev | cut -d ' ' -f 3- | rev)
|
||||||
|
if ! echo "$msg" | grep -F -q "Signed-off-by: ${committer}"
|
||||||
|
then
|
||||||
|
echo >&2 "Missing committer Signed-off-by in commit $commit"
|
||||||
|
errors=$((errors+1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $errors != 0 ]
|
||||||
then
|
then
|
||||||
echo >&2 "Found local changelog in $local_ref, not pushing"
|
echo >&2 "Found $errors errors in $local_ref, not pushing"
|
||||||
echo >&2 "Check commit $commit"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue