commit | 289a367e3337517129e45123a79a3ccf23a90649 | [log] [tgz] |
---|---|---|
author | Evan Stoddard <EvanStoddard23@gmail.com> | Wed Jul 08 15:23:32 2020 -0500 |
committer | Anthony Sottile <asottile@umich.edu> | Wed Jul 08 14:23:52 2020 -0700 |
tree | 223d925839cd790e904063ed5a0d280c1be1d284 | |
parent | 56c4e645ab4d30db7dbd362c3df25563049ab624 [diff] |
update docs to use latest checkout action I can only get this to work when setting `fetch-depth: 0`. Otherwise, I see this error ``` push fixes /usr/bin/git config user.name pre-commit /usr/bin/git config user.email pre-commit@example.com /usr/bin/git checkout HEAD -b pre-commit-gha M README.md Switched to a new branch 'pre-commit-gha' /usr/bin/git commit -am pre-commit fixes [pre-commit-gha 800dbc6] pre-commit fixes 1 file changed, 1 insertion(+), 1 deletion(-) /usr/bin/git remote set-url origin ***github.com/***.git /usr/bin/git push origin HEAD To https://github.com/***.git ! [rejected] HEAD -> pre-commit-gha (fetch first) error: failed to push some refs to 'https://github.com/***.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. ```
a GitHub action to run pre-commit
To use this action, make a file .github/workflows/pre-commit.yml
. Here's a template to get started:
name: pre-commit on: pull_request: push: branches: [master] jobs: pre-commit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-python@v1 - uses: pre-commit/action@v2.0.0
This does a few things:
pre-commit
cacheBy default, this action runs all the hooks against all the files. extra_args
lets users specify a single hook id and/or options to pass to pre-commit run
.
Here's a sample step configuration that only runs the flake8
hook against all the files (use the template above except for the pre-commit
action):
- uses: pre-commit/action@v2.0.0 with: extra_args: flake8 --all-files
this action also provides an additional behaviour when used in private repositories. when configured with a github token, the action will push back fixes to the pull request branch.
using the template above, you'll make two replacements for individual actions:
first is the checkout step, which needs to use unlimited fetch depth for pushing
- uses: actions/checkout@v2 with: fetch-depth: 0
next is passing the token to the pre-commit action
- uses: pre-commit/action@v2.0.0 with: token: ${{ secrets.GITHUB_TOKEN }}
note that secrets.GITHUB_TOKEN
is automatically provisioned and will not require any special configuration.
while you could technically configure this for a public repository (using a personal access token), I can't think of a way to do this safely without exposing a privileged token to pull requests -- if you have any ideas, please leave an issue!