mirror of
https://github.com/git/git
synced 2024-10-30 14:03:28 +00:00
763f20fb4a
Avoid unnecessary builds in CI, with settings configured in ci-config. * tb/ci-concurrency: ci: avoid unnecessary builds
91 lines
2.8 KiB
YAML
91 lines
2.8 KiB
YAML
name: check-whitespace
|
|
|
|
# Get the repository with all commits to ensure that we can analyze
|
|
# all of the commits contributed via the Pull Request.
|
|
# Process `git log --check` output to extract just the check errors.
|
|
# Exit with failure upon white-space issues.
|
|
|
|
on:
|
|
pull_request:
|
|
types: [opened, synchronize]
|
|
|
|
# Avoid unnecessary builds. Unlike the main CI jobs, these are not
|
|
# ci-configurable (but could be).
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
check-whitespace:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: git log --check
|
|
id: check_out
|
|
run: |
|
|
baseSha=${{github.event.pull_request.base.sha}}
|
|
problems=()
|
|
commit=
|
|
commitText=
|
|
commitTextmd=
|
|
goodparent=
|
|
while read dash sha etc
|
|
do
|
|
case "${dash}" in
|
|
"---")
|
|
if test -z "${commit}"
|
|
then
|
|
goodparent=${sha}
|
|
fi
|
|
commit="${sha}"
|
|
commitText="${sha} ${etc}"
|
|
commitTextmd="[${sha}](https://github.com/${{ github.repository }}/commit/${sha}) ${etc}"
|
|
;;
|
|
"")
|
|
;;
|
|
*)
|
|
if test -n "${commit}"
|
|
then
|
|
problems+=("1) --- ${commitTextmd}")
|
|
echo ""
|
|
echo "--- ${commitText}"
|
|
commit=
|
|
fi
|
|
case "${dash}" in
|
|
*:[1-9]*:) # contains file and line number information
|
|
dashend=${dash#*:}
|
|
problems+=("[${dash}](https://github.com/${{ github.repository }}/blob/${{github.event.pull_request.head.ref}}/${dash%%:*}#L${dashend%:}) ${sha} ${etc}")
|
|
;;
|
|
*)
|
|
problems+=("\`${dash} ${sha} ${etc}\`")
|
|
;;
|
|
esac
|
|
echo "${dash} ${sha} ${etc}"
|
|
;;
|
|
esac
|
|
done <<< $(git log --check --pretty=format:"---% h% s" ${baseSha}..)
|
|
|
|
if test ${#problems[*]} -gt 0
|
|
then
|
|
if test -z "${commit}"
|
|
then
|
|
goodparent=${baseSha: 0:7}
|
|
fi
|
|
echo "🛑 Please review the Summary output for further information."
|
|
echo "### :x: A whitespace issue was found in one or more of the commits." >$GITHUB_STEP_SUMMARY
|
|
echo "" >>$GITHUB_STEP_SUMMARY
|
|
echo "Run these commands to correct the problem:" >>$GITHUB_STEP_SUMMARY
|
|
echo "1. \`git rebase --whitespace=fix ${goodparent}\`" >>$GITHUB_STEP_SUMMARY
|
|
echo "1. \`git push --force\`" >>$GITHUB_STEP_SUMMARY
|
|
echo " " >>$GITHUB_STEP_SUMMARY
|
|
echo "Errors:" >>$GITHUB_STEP_SUMMARY
|
|
for i in "${problems[@]}"
|
|
do
|
|
echo "${i}" >>$GITHUB_STEP_SUMMARY
|
|
done
|
|
|
|
exit 2
|
|
fi
|