summaryrefslogtreecommitdiff
path: root/devel/check_if_signed
blob: e7e5c504b2cd92dbe023439e7ed32f3417ff035c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env bash

# MRs have the contributor git tree as the only remote
# Add GnuTLS Gitlab upstream tree as remote so we can compare against
# the right master tree

git remote add gitlab-gnutls-upstream-git-tree https://gitlab.com/gnutls/gnutls.git
git fetch -q gitlab-gnutls-upstream-git-tree master

if [ -z "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"]; then
  CI_MERGE_REQUEST_TARGET_BRANCH_NAME="gitlab-gnutls-upstream-git-tree/master"
fi

echo "target=$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
echo "source=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME"

# create list of commits of the current branch
commits=$(git rev-list --no-merges $CI_MERGE_REQUEST_TARGET_BRANCH_NAME..)
if [ -z "$commits" ]; then
    echo "Couldn't find any commits to check"
    exit 1
fi

# check if author's email matches email in 'Signed-off-by'
for hash in $commits; do
  author=$(git log --format='%ae' ${hash}^\!)
  signed=$(git log --format='%b' ${hash}^\! | grep -i "Signed-off-by:")
  echo "Checking commit $hash from Author $author and Signed-off-by: $signed"
  if [ $? -ne 0 ]; then
    echo "Missing Signed-off-by"
    exit 1
  fi
  if ! echo $signed | grep -q "Signed-off-by:.*<${author}>"; then
    echo "Author '${author}' doesn't match"
    exit 1
  fi
done