diff --git a/README.md b/README.md index 635555b..7ad44bd 100644 --- a/README.md +++ b/README.md @@ -36,11 +36,9 @@ This does a few things: ### With custom invocations -By 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`. +By 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): +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): ```yaml - uses: pre-commit/action@v2.0.0 @@ -50,14 +48,11 @@ the files (use the template above except for the `pre-commit` action): ### In private repositories -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. +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 need to make two replacements for individual actions: -First is the checkout step, which needs to use unlimited fetch depth for -pushing: +First is the checkout step, which needs to use unlimited fetch depth for pushing: ```yaml - uses: actions/checkout@v2 @@ -65,7 +60,7 @@ pushing: fetch-depth: 0 ``` -Next is passing the token to the pre-commit action: +Next is passing the token to the `pre-commit` action: ```yaml - uses: pre-commit/action@v2.0.0 @@ -76,7 +71,31 @@ Next is passing the token to the pre-commit action: Note that `secrets.GITHUB_TOKEN` is [automatically provisioned](https://docs.github.com/en/free-pro-team@latest/actions/reference/authentication-in-a-workflow#about-the-github_token-secret) 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](https://github.com/pre-commit/action/issues)! +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](https://github.com/pre-commit/action/issues)! + +## Troubleshooting + +1. Changes aren't commited. + 1. The _push back_ behaviour is only enabled for pull requests, not for pushes directly to branches. + Make sure that your `.github/workflows/pre-commit.yml` contains at least + + ```YAML + on: + pull_request: + ``` + + 2. Your pre-commit actions contain a conflict. + If `pre-commit` fails on the second invocation it can't push to the branch because GitHub actions does not fire on pushes made by GitHub actions – So instead it marks the job as failed. + _Example:_ Running `double-quote-string-fixer` and `black` will cause the action to fail since both will format strings differently (Unless you pass `-S [skip-string-normalization]` to `black`) and will prevent them from reaching an agreement. +2. Actions cannot write to file. + **Error**: + ```bash + ! [remote rejected] HEAD -> test (refusing to allow a GitHub App to create or update workflow `.github/workflows/pre-commit.yml` without `workflows` permission) + ``` + This happens when the action is trying to change a workflow file and is prohibited by [GitHub](https://github.community/t/refusing-to-allow-an-integration-to-create-or-update/16326/2). + **Fix:** + Exclude the workflow file from the action through top level [`exclude`](https://pre-commit.com/#top_level-exclude) or hook level [`exclude`](https://pre-commit.com/#config-exclude). + **Example regex for top level** + ```YAML + exclude: '.github/workflows/.*?\.yml' + ``