ci: lint every commit in a pull request, not only its title - #1104
Merged
Merged
Conversation
main now takes rebase merges only, with linear history. Every commit in a pull request lands on main as written, and release-please derives version bumps and changelogs from each one, so each commit must be a Conventional Commit. Add a Conventional commits job that runs a pinned @commitlint/cli over the pull request's base..head range. .commitlintrc.json extends config-conventional with the changelog types from release-please-config.json and no body or footer line limit, because Dependabot bodies carry release notes. Dependabot now uses the plain chore prefix with its scope, giving chore(deps): and chore(deps-dev): instead of chore(deps)(deps):, and the auto-merge workflow enables rebase auto-merge instead of squash. mdformat also rewraps a few existing lines in the workflows README. Refs dougborg/dougborg-dot-net#511 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The owner's merge rule is now rebase merges only, with linear history: no squash merges and no merge commits (dougborg/dougborg-dot-net#511). With rebase, every commit in a pull request lands on
mainas written, and release-please derives versions and changelogs forclientandmcpfrom each one. Today nothing lints commit messages here; malformed types just silently skip a bump..github/workflows/commitlint.yml(workflowCommit conventions, jobConventional commits). It runs@commitlint/cli21.2.3 (pinned) overbase..headof the pull request, using only thecheckout(v7.0.1) andsetup-node(v7.0.0) SHAs already pinned inci.yml. Top-levelpermissions: {}, job-levelcontents: read,persist-credentials: false..commitlintrc.jsonextends@commitlint/config-conventionalwith a type list matching thechangelog-sectionsinrelease-please-config.json(build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test). Body and footer line length are unlimited, because Dependabot bodies carry release notes.prefix: chorewithinclude: scope, so commits readchore(deps): bump …/chore(deps-dev): bump …instead of the double-scopedchore(deps)(deps): …. The ecosystem is still visible from the labels.dependabot-auto-merge.ymlnow runsgh pr merge --auto --rebaseinstead of--squash. The existing guard is unchanged: it only acts when both the PR author and the event sender aredependabot[bot](ID 49699333), so a manually rebased head (which loses the bot's verified signature) stays under manual review, andfetch-metadatakeeps commit verification on. The workflows README documents the new job and the--rebaseswitch; the repo'smdformathook also rewrapped three existing paragraphs in that README.Signed commits: nothing in this repository requires them. The only ruleset (
Protect Main) hasdeletion,non_fast_forward,required_linear_history,pull_request,copilot_code_review,required_status_checks; there is no classic branch protection (so norequired_signatures). Rebase merges are therefore not blocked by a signature rule.After this merges and the check is green, dougborg/dougborg-dot-net#511 switches this repository and its
Protect Mainruleset to rebase-only, and addsConventional commitsas a required check.Test plan
commitlintover the whole history (1,184 commits): 63 commits with errors, 34 with warnings only (footer-leading-blank). Errors are historical and informational:subject-case34,header-max-length18,type-empty/subject-empty13 (non-Conventional subjects),type-enum1.chore(deps): bump x from 1 to 2message with a >100-character body line passes; a bare "Update the readme" failsactionlint,zizmor1.25.2, and pre-commit (mdformat,yamllint,pytest) pass on the changed filesConventional commitsjob passes on this PR🤖 Generated with Claude Code