ci: Update signed commit check to accept a SHA
Try a merge commit if no parameters are passed, otherwise accept the
first parameter as the oldest SHA to check.
Signed-off-by: Fabio Utzig <utzig@apache.org>
diff --git a/ci/check-signed-off-by.sh b/ci/check-signed-off-by.sh
index c39f6a6..5d41afe 100755
--- a/ci/check-signed-off-by.sh
+++ b/ci/check-signed-off-by.sh
@@ -15,19 +15,19 @@
DEPENDABOT_COMMITER='GitHub <noreply@github.com>'
DEPENDABOT_AUTHOR='dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>'
-# this retrieves the merge commit created by GH
-parents=(`git log -n 1 --format=%p HEAD`)
-
-if [[ "${#parents[@]}" -eq 1 ]]; then
- # CI doesn't use a merge commit
- commits=$(git show -s --format=%h ${parents})
-elif [[ "${#parents[@]}" -eq 2 ]]; then
- # CI uses a merge commit, eg GH / Travis
- from="${parents[0]}"
- into="${parents[1]}"
- commits=$(git show -s --format=%h ${from}..${into})
+if [[ -n "$1" ]]; then
+ commits=$(git show -s --format=%h ${1}~..HEAD)
else
- echo "Unexpected behavior, cannot verify more than 2 parent commits!"
+ parents=(`git log -n 1 --format=%p HEAD`)
+ if [[ "${#parents[@]}" -ne 2 ]]; then
+ echo "HEAD is not a merge commit, please supply the oldest SHA"
+ exit 1
+ fi
+ commits=$(git show -s --format=%h ${parents[0]}..${parents[1]})
+fi
+
+if [[ -z "${commits}" ]]; then
+ echo "No commits found in this PR!"
exit 1
fi
@@ -78,10 +78,4 @@
if [[ ${found_author} == false || ${found_committer} == false ]]; then
exit 1
fi
-
done
-
-if [[ -z "${commits}" ]]; then
- echo "No commits found in this PR!"
- exit 1
-fi