• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

sds / overcommit / 42767965538
100%
master: 91%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 10 Nov 2026 06:23AM UTC
Jobs 1
Files 224
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

10 Nov 2026 06:21AM UTC coverage: 92.847% (+0.3%) from 92.522%
42767965538

push

github

web-flow
Remember all previously approved configurations and hooks (#665)

Checking out or rebasing through an older, already approved configuration currently fails signature verification because signing a newer version overwrites the only stored approval. Remember every locally approved configuration and hook version, while continuing to reject unseen changes and unapproved combinations of hook code and configuration.

Fixes #300.

Approvals now live in `overcommit-signatures` under the repository's Git directory. Each file is indexed by the SHA256 of its signature config key and its existing SHA256 signature, and contains both values for inspection. Lookup reads one fixed-size file regardless of history length. History has no cap and does not grow `.git/config` or slow Git config reads.

This replaces the original PR's Git blob design and addresses the security concerns in its review:

- Approvals are local filesystem data outside the Git object database. Fetching attacker-controlled commits, blobs, tags, or other refs cannot grant trust.
- Git garbage collection cannot remove approvals.
- Revoke one approval by deleting its file; revoke all approvals by deleting `overcommit-signatures`. No refs, keys, or cryptographic trust infrastructure are required.
- Existing Git config signatures migrate on first use without changing their digest format. The legacy key is removed only after its approval is safely written, so deleting history does not resurrect an old approval.
- Linked worktrees share history by default. With `extensions.worktreeConfig`, both history and the existing verification setting retain their per-worktree isolation.
- A hook's code and configuration remain signed together. Individually approved components do not approve new combinations.

README documents storage, migration, worktrees, and revocation. Older Overcommit releases do not read the new history and will require re-signing if used after migration.

Validation:

- Full suite: 1,785 exam... (continued)

53 of 60 new or added lines in 7 files covered. (88.33%)

3388 of 3649 relevant lines covered (92.85%)

2089.81 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
34.62
0.0% lib/overcommit/hook_loader/plugin_hook_loader.rb
2
89.66
4.22% lib/overcommit/configuration.rb
1
79.49
0.0% lib/overcommit/configuration_loader.rb
Jobs
ID Job ID Ran Files Coverage
1 42767965538.1 10 Nov 2026 06:23AM UTC 4032
77.48
GitHub Action Run
Source Files on build 42767965538
  • Tree
  • List 224
  • Changed 176
  • Source Changed 6
  • Coverage Changed 176
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #42767965538
  • d788ab82 on github
  • Prev Build on main (#42765158542)
  • Next Build on main (#42770188652)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc