GH: add a workflow to check for whitespace issues

This runs git-log(1) --check on *each* commit and will report any
issues, e.g.

  --- afe5753fa ("Changes made in upstream")
  src/http/ngx_http_upstream.c:415: trailing whitespace.
  +
  src/http/ngx_http_upstream.c:417: trailing whitespace.
  +      ngx_http_upstream_backend_ssl_protocol, 0,

Specific exceptions can be handled via gitattributes(5).
This commit is contained in:
Andrew Clayton 2026-03-26 17:51:56 +00:00
parent 1f27ab1c8f
commit 07c7adfc7f

49
.github/workflows/check-whitespace.yaml vendored Normal file
View file

@ -0,0 +1,49 @@
name: Check Whitespace
# Process `git log --check` output to extract just the check errors.
on:
pull_request:
types: [ opened, synchronize ]
jobs:
check-whitespace:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 0
- name: git log --check
run: |
echo "## Whitespace Check Results" >${GITHUB_STEP_SUMMARY}
err=0
commit=
while read dash hash subj
do
case "${dash}" in
"---")
err=0
commit="${hash} (\"${subj}\")"
;;
"")
;;
*)
if test -n "${commit}"
then
echo "" | tee -a ${GITHUB_STEP_SUMMARY}
echo "--- ${commit}" | tee -a ${GITHUB_STEP_SUMMARY}
fi
err=1
commit=
# Ignore the variable names, this is actually the output from
# git-log --check
echo "${dash} ${hash} ${subj}" | tee -a ${GITHUB_STEP_SUMMARY}
;;
esac
done <<< $(git log --check --pretty=format:"--- %h %s" ${{github.event.pull_request.base.sha}}..)
if test ${err} -ne 0
then
exit 2
fi