MyFirstContribution: use switch for changing branches #4297
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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@v4 | |
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 |