You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tracking issue for the first release that asks strangers to adopt this. Mirrors the process used for blairham/stevedore#25, with the differences that matter for a port: everything here has to survive the reader who already uses the thing we reimplemented.
The care a port needs
Three of these are not present anywhere in the repo today.
The name collision, stated up front. The binary is pre-commit and the tap formula is pre-commit; brew info already prints pre-commit shadows homebrew/core/pre-commit, and the README tells people to sudo mv pre-commit /usr/local/bin/ over the Python tool. Decision: keep both names — git hooks invoke pre-commit by name, so shadowing is the drop-in contract, not an accident. That makes documenting it a blocker rather than a nicety.
The shared cache, stated up front. Default store is ~/.cache/pre-commit, same as Python, but the metadata format is not compatible (JSON + sha256 dir names vs sqlite + random names), and clean is RemoveAll over the whole directory. Decision: match upstream exactly, including the destructive clean. Same conclusion — document, don't diverge.
Honest state before we claim parity
docs/parity.md — generated from test/integration/parity_report.json, not from memory. Current: 78 checks, 75 pass, 3 known differences.
The committed report was generated against Python 4.5.0 while the version scheme claims 4.6 parity (upstream latest is 4.6.2). Regenerate against 4.6.x and pin the version the CI job installs — pip install pre-commit is unpinned today, so the number moves without a commit.
The README claims 22 languages. Ten of them (conda, coursier, dart, dotnet, haskell, julia, lua, perl, r, swift) live in a single 279-line internal/languages/others.go with no test file and no coverage in the parity harness. Either cover them or grade the claim honestly in docs/parity.md.
The parity job is gated on push or a test-languages label, so it does not run on most PRs.
CI is ubuntu-latest only, but releases ship macOS and Windows archives. Windows in particular has never been exercised.
Adoption surface
docs/comparison.md — "should I use this instead of Python pre-commit?", leading with the case for not switching.
docs/stability.md — v4.6.x means upstream parity, not semver of this codebase. Without this, v4 reads as maturity and the first breaking change reads as a broken promise.
docs/announcement.md — the launch playbook, written before anything is posted.
README restructure: lead with the story, move the command reference into docs/, fix the Action example (pins @main, should be @v4).
Community health files: CONTRIBUTING, CODE_OF_CONDUCT, SECURITY, issue templates.
Repo metadata: description (empty today), topics (none, so the repo is invisible in GitHub search), homepage, Discussions, social preview.
Publish the composite action to the GitHub Marketplace (manual: a checkbox on the release form).
Pre-flight
brew install blairham/tap/pre-commit on a clean machine, with homebrew/core's pre-commit already installed — verify the failure mode is comprehensible.
go install github.com/blairham/go-pre-commit/v4@latest then the rename step, exactly as the README describes it.
uses: blairham/go-pre-commit@v4 resolves.
Every command in the README quick start, in order, in a scratch repo.
Tracking issue for the first release that asks strangers to adopt this. Mirrors the process used for
blairham/stevedore#25, with the differences that matter for a port: everything here has to survive the reader who already uses the thing we reimplemented.The care a port needs
Three of these are not present anywhere in the repo today.
pre-commit, © 2014 Anthony Sottile & Ken Struys;identify, © 2017 Chris Kuehl & Anthony Sottile). There is noNOTICE, and no mention of either copyright anywhere in the tree.internal/identify/identify.gofollows upstreamidentify's data tables closely enough that this is not optional.pre-commitand the tap formula ispre-commit;brew infoalready printspre-commit shadows homebrew/core/pre-commit, and the README tells people tosudo mv pre-commit /usr/local/bin/over the Python tool. Decision: keep both names — git hooks invokepre-commitby name, so shadowing is the drop-in contract, not an accident. That makes documenting it a blocker rather than a nicety.~/.cache/pre-commit, same as Python, but the metadata format is not compatible (JSON + sha256 dir names vs sqlite + random names), andcleanisRemoveAllover the whole directory. Decision: match upstream exactly, including the destructiveclean. Same conclusion — document, don't diverge.Honest state before we claim parity
docs/parity.md— generated fromtest/integration/parity_report.json, not from memory. Current: 78 checks, 75 pass, 3 known differences.pip install pre-commitis unpinned today, so the number moves without a commit.internal/languages/others.gowith no test file and no coverage in the parity harness. Either cover them or grade the claim honestly indocs/parity.md.pushor atest-languageslabel, so it does not run on most PRs.ubuntu-latestonly, but releases ship macOS and Windows archives. Windows in particular has never been exercised.Adoption surface
docs/comparison.md— "should I use this instead of Python pre-commit?", leading with the case for not switching.docs/stability.md—v4.6.xmeans upstream parity, not semver of this codebase. Without this,v4reads as maturity and the first breaking change reads as a broken promise.docs/announcement.md— the launch playbook, written before anything is posted.docs/, fix the Action example (pins@main, should be@v4).Pre-flight
brew install blairham/tap/pre-commiton a clean machine, with homebrew/core'spre-commitalready installed — verify the failure mode is comprehensible.go install github.com/blairham/go-pre-commit/v4@latestthen the rename step, exactly as the README describes it.uses: blairham/go-pre-commit@v4resolves.