mirror of
https://github.com/ostreedev/ostree.git
synced 2024-12-22 17:35:55 +03:00
ci: Import latest ci-commitmessage-submodules from rpm-ostree
Especially for https://github.com/coreos/rpm-ostree/pull/2079.
This commit is contained in:
parent
bd9b4ea731
commit
eb3fe35b06
@ -1,5 +1,8 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
set -xeuo pipefail
|
||||
|
||||
dn=$(dirname $0)
|
||||
. ${dn}/libbuild.sh
|
||||
|
||||
# Copyright 2017 Colin Walters <walters@verbum.org>
|
||||
# Licensed under the new-BSD license (http://www.opensource.org/licenses/bsd-license.php)
|
||||
@ -13,11 +16,8 @@ set -euo pipefail
|
||||
# It's very common for people to accidentally change submodules, and having this
|
||||
# requirement is a small hurdle to pass.
|
||||
|
||||
# if running under PAPR, use the branch/PR HEAD actually
|
||||
# being tested rather than the merge sha
|
||||
HEAD=${PAPR_COMMIT:-HEAD}
|
||||
dn=$(dirname $0)
|
||||
. ${dn}/libpaprci/libbuild.sh
|
||||
# If passed the commit, use that. Otherwise, just use HEAD.
|
||||
HEAD=${1:-HEAD}
|
||||
|
||||
tmpd=$(mktemp -d)
|
||||
touch ${tmpd}/.tmpdir
|
||||
@ -30,8 +30,8 @@ cleanup_tmp() {
|
||||
trap cleanup_tmp EXIT
|
||||
|
||||
if ! [ -x /usr/bin/git ]; then
|
||||
pkg_upgrade
|
||||
pkg_install git
|
||||
pkg_upgrade
|
||||
pkg_install git
|
||||
fi
|
||||
|
||||
gitdir=$(realpath $(pwd))
|
||||
@ -42,17 +42,34 @@ cp -a ${gitdir} ${tmpd}/workdir
|
||||
cd ${tmpd}/workdir
|
||||
git log --pretty=oneline origin/master..$HEAD | while read logline; do
|
||||
commit=$(echo ${logline} | cut -f 1 -d ' ')
|
||||
# For merge commits, just check that they're empty (i.e. no conflict
|
||||
# resolution was needed). Otherwise, let's just error out. Conflicts should
|
||||
# be resolved by rebasing the PR.
|
||||
# https://stackoverflow.com/questions/3824050#comment82244548_13956422
|
||||
if [ "$(git rev-list --no-walk --count --merges ${commit})" -ne 0 ]; then
|
||||
if [ -n "$(git diff-tree ${commit})" ]; then
|
||||
echo "error: non-empty git merge: resolve conflicts by rebasing!"
|
||||
exit 1
|
||||
fi
|
||||
echo "Commit ${commit} is an empty merge commit; ignoring..."
|
||||
continue
|
||||
fi
|
||||
git diff --name-only ${commit}^..${commit} > ${tmpd}/diff.txt
|
||||
git log -1 ${commit} > ${tmpd}/log.txt
|
||||
echo "Validating commit for submodules: $commit"
|
||||
sed -e 's,^,# ,' < ${tmpd}/log.txt
|
||||
git checkout -q "${commit}"
|
||||
git submodule update --init
|
||||
git submodule foreach --quiet 'echo $path'| while read submodule; do
|
||||
if grep -q -e '^'${submodule} ${tmpd}/diff.txt; then
|
||||
echo "Commit $commit modifies submodule: $submodule"
|
||||
expected_match="Update submodule: $submodule"
|
||||
# check if it's from dependabot
|
||||
if grep -q -e '^Author: dependabot' ${tmpd}/log.txt; then
|
||||
echo "Commit $commit contains bump from Dependabot"
|
||||
continue
|
||||
fi
|
||||
if ! grep -q -e "$expected_match" ${tmpd}/log.txt; then
|
||||
sed -e 's,^,# ,' < ${tmpd}/log.txt
|
||||
echo "error: Commit message for ${commit} changes a submodule, but does not match regex ${expected_match}"
|
||||
exit 1
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user