diff options
author | Chris. Webster <chris@webstech.net> | 2020-09-22 07:28:04 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-10-09 11:22:05 -0700 |
commit | 32c83afc2c69aa51b82aa223f2099389f1f0be0a (patch) | |
tree | c32bf5073149784f1dcce60cc18558722a80a866 /.github/workflows | |
parent | Git 2.29-rc1 (diff) | |
download | tgif-32c83afc2c69aa51b82aa223f2099389f1f0be0a.tar.xz |
ci: github action - add check for whitespace errors
Not all developers are aware of `git diff --check` to warn
about whitespace issues. Running a check when a pull request is
opened or updated can save time for reviewers and the submitter.
A GitHub workflow will run when a pull request is created or the
contents are updated to check the patch series. A pull request
provides the necessary information (number of commits) to only
check the patch series.
To ensure the developer is aware of any issues, a comment will be
added to the pull request with the check errors.
Signed-off-by: Chris. Webster <chris@webstech.net>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/check-whitespace.yml | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/.github/workflows/check-whitespace.yml b/.github/workflows/check-whitespace.yml new file mode 100644 index 0000000000..9d070b9cdf --- /dev/null +++ b/.github/workflows/check-whitespace.yml @@ -0,0 +1,69 @@ +name: check-whitespace + +# Get the repo with the commits(+1) in the series. +# Process `git log --check` output to extract just the check errors. +# Add a comment to the pull request with the check errors. + +on: + pull_request: + types: [opened, synchronize] + +jobs: + check-whitespace: + runs-on: ubuntu-latest + steps: + - name: Set commit count + shell: bash + run: echo "::set-env name=COMMIT_DEPTH::$((1+$COMMITS))" + env: + COMMITS: ${{ github.event.pull_request.commits }} + + - uses: actions/checkout@v2 + with: + fetch-depth: ${{ env.COMMIT_DEPTH }} + + - name: git log --check + id: check_out + run: | + log= + commit= + while read dash etc + do + case "${dash}" in + "---") + commit="${etc}" + ;; + "") + ;; + *) + if test -n "${commit}" + then + log="${log}\n${commit}" + echo "" + echo "--- ${commit}" + fi + commit= + log="${log}\n${dash} ${etc}" + echo "${dash} ${etc}" + ;; + esac + done <<< $(git log --check --pretty=format:"---% h% s" -${{github.event.pull_request.commits}}) + + if test -n "${log}" + then + echo "::set-output name=checkout::"${log}"" + exit 2 + fi + + - name: Add Check Output as Comment + uses: actions/github-script@v3 + id: add-comment + with: + script: | + github.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: "Whitespace errors found in workflow ${{ github.workflow }}:\n\n${{ steps.check_out.outputs.checkout }}" + }) + if: ${{ failure() }} |