From 275975c699b2d0cc0e48066cf2b01ad3db1226f6 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Mon, 5 Sep 2022 09:08:39 +0200 Subject: [PATCH] github-ci: add cherry-pick line check --- .github/workflows/commits.yml | 3 +++ qa/validate-cp.sh | 40 +++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100755 qa/validate-cp.sh diff --git a/.github/workflows/commits.yml b/.github/workflows/commits.yml index 912800bc55..c2175694a6 100644 --- a/.github/workflows/commits.yml +++ b/.github/workflows/commits.yml @@ -72,6 +72,9 @@ jobs: - run: /usr/bin/git config --global --add safe.directory /__w/suricata/suricata - run: git fetch - run: git clone https://github.com/OISF/libhtp -b 0.5.x + - name: Checking Cherry-pick lines + run: | + ./qa/validate-cp.sh "${GITHUB_BASE_REF}" - name: Building all commits run: | echo "Building commits from ${GITHUB_BASE_REF}." diff --git a/qa/validate-cp.sh b/qa/validate-cp.sh new file mode 100755 index 0000000000..a3c6b1ca8a --- /dev/null +++ b/qa/validate-cp.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +#set -x +#set -e + +if [ $# -ne 1 ]; then + echo "call with base branch (e.g. master-5.0.x)" + exit 1; +fi + +BASE=$1 +CHECK_BRANCH="${VALIDATE_CHECK_BRANCH:-remotes/origin/master}" + +test_cherrypicked_line() { + REV=$1 + #echo "\"REV $REV\"" + + CHERRY=$(echo $REV | grep '(cherry picked from commit' | awk '{print $5}'|awk -F')' '{print $1}' || return 1) + git branch -a --contains $CHERRY | grep " $CHECK_BRANCH$" &> /dev/null + if [ "$?" -ne 0 ]; then + echo -n "ERROR $CHERRY not found in $CHECK_BRANCH" + return 1 + else + echo -n "OK " + fi +} + +for rev in $(git rev-list --reverse origin/${BASE}..HEAD); do + echo -n "COMMIT $rev: " + + GREPOP=$(git log --format=%B -n 1 $rev | grep 'cherry picked from commit') + if [ ! -z "$GREPOP" ]; then + while IFS= read -r line; do + test_cherrypicked_line "$line" || exit 1 + done <<< "$GREPOP" + echo + else + echo "not a cherry-pick" + fi +done -- 2.47.2