From da1b11d158da5f1ec2a6ea7657923a7d1d5aaaca Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Fri, 29 Mar 2019 14:01:14 -0400 Subject: Fix check_if_signed Fix the target branch we check against by adding upstream as remote. Drop the use of set -e as this causes the shell to immediately exit on errors instead of allowing the code to check the failure and report what it faled about. Also print which commits are being checked and what information was found so that a CI failure can be better diagnosed. Signed-off-by: Simo Sorce --- devel/check_if_signed | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/devel/check_if_signed b/devel/check_if_signed index 3d05d4fcbb..e7e5c504b2 100755 --- a/devel/check_if_signed +++ b/devel/check_if_signed @@ -1,27 +1,32 @@ #!/usr/bin/env bash -set -e +# 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 -if test -z "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"; then - CI_MERGE_REQUEST_TARGET_BRANCH_NAME="origin/master" +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" -if test -z "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME"; then - CI_MERGE_REQUEST_SOURCE_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD) - echo "branch=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" -fi - # create list of commits of the current branch -commits=$(git rev-list --no-merges $CI_MERGE_REQUEST_TARGET_BRANCH_NAME..$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME) +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:") - if test $? -ne 0; then + echo "Checking commit $hash from Author $author and Signed-off-by: $signed" + if [ $? -ne 0 ]; then echo "Missing Signed-off-by" exit 1 fi -- cgit v1.2.1