diff --git a/README.md b/README.md index 1aa3e9ee..c1541154 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,12 @@ You can see more info about GitHub's default token [here](https://docs.github.co default: `${{ github.token }}` +### `excludeTargetBranch` + +When set to `true` excludes commits from the target branch. This is useful if the two branches diverged at a time before `commitlint` was used. In this case, the target branch may have old commits that are not in the source branch and which don't follow the lint rules. In this case, they'll be flagged on every check and there's nothing you can do to resolve it. In this case, turn on `excludeTargetBranch`. + +default: `false` + ## Outputs ### `results` diff --git a/action.yml b/action.yml index ac999f6a..65c7a9f5 100644 --- a/action.yml +++ b/action.yml @@ -34,6 +34,17 @@ inputs: https://docs.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token default: ${{ github.token }} required: false + excludeTargetBranch: + description: > + When set to `true` excludes commits from the target branch. This is useful on merge commits of two + divergent branches. By default all of the commits in the target branch that are not in the source + branch will be linted again. Set this to `true` to avoid that. + + TODO: This explanation can be made better when I better understand why `--firstParent` alone didn't resolve this. + To do that I need to understand what `git log ` is doing. + default: "false" + required: false + outputs: results: description: The error and warning messages for each one of the analyzed commits diff --git a/src/action.js b/src/action.js index 8d34009c..a7706d54 100644 --- a/src/action.js +++ b/src/action.js @@ -12,7 +12,7 @@ const pullRequestEvent = 'pull_request' const pullRequestTargetEvent = 'pull_request_target' const pullRequestEvents = [pullRequestEvent, pullRequestTargetEvent] -const { GITHUB_EVENT_NAME, GITHUB_SHA } = process.env +const { GITHUB_EVENT_NAME, GITHUB_SHA, GITHUB_BASE_REF } = process.env const configPath = resolve(process.env.GITHUB_WORKSPACE, getInput('configFile')) @@ -78,6 +78,10 @@ function getHistoryCommits(from, to) { options.firstParent = true } + if (getInput('excludeTargetBranch') === 'true') { + options[`^${GITHUB_BASE_REF}`] = true + } + if (!from) { options.maxCount = 1 }