123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #!/bin/bash
- #
- # A script which checks that an appropriate news file has been added on this
- # branch.
- set -e
- # make sure that origin/develop is up to date
- git remote set-branches --add origin develop
- git fetch -q origin develop
- pr="$BUILDKITE_PULL_REQUEST"
- # if there are changes in the debian directory, check that the debian changelog
- # has been updated
- if ! git diff --quiet FETCH_HEAD... -- debian; then
- if git diff --quiet FETCH_HEAD... -- debian/changelog; then
- echo "Updates to debian directory, but no update to the changelog." >&2
- exit 1
- fi
- fi
- # if there are changes *outside* the debian directory, check that the
- # newsfragments have been updated.
- if ! git diff --name-only FETCH_HEAD... | grep -qv '^debian/'; then
- exit 0
- fi
- tox -qe check-newsfragment
- echo
- echo "--------------------------"
- echo
- matched=0
- for f in `git diff --name-only FETCH_HEAD... -- changelog.d`; do
- # check that any modified newsfiles on this branch end with a full stop.
- lastchar=`tr -d '\n' < $f | tail -c 1`
- if [ $lastchar != '.' -a $lastchar != '!' ]; then
- echo -e "\e[31mERROR: newsfragment $f does not end with a '.' or '!'\e[39m" >&2
- exit 1
- fi
- # see if this newsfile corresponds to the right PR
- [[ -n "$pr" && "$f" == changelog.d/"$pr".* ]] && matched=1
- done
- if [[ -n "$pr" && "$matched" -eq 0 ]]; then
- echo -e "\e[31mERROR: Did not find a news fragment with the right number: expected changelog.d/$pr.*.\e[39m" >&2
- exit 1
- fi
|