vole
Clone
Read only, no credentials:
https://rodent.software/git/vole.git
Write over SSH with a registered key:
git clone ssh://git@0.0.0.0:2222/vole.git
A free and open-source forge that lives in your Git repo.
Runs: the rebuild comment describes the model that exists
ec2aba4bb9355e37ad428f8d303871791b0d58e1 · Keenan Nemetz · 16d ago · parent f50f6fab
Runs: the rebuild comment describes the model that exists It explained why RestoreFinished does not re-verify a signature. There is no signature and nothing to re-verify: attribution is the push boundary's, and the decision it made is in the push log rather than the object.
internal/runs/record.go +4−4
| @@ -283,10 +283,10 @@ func RecordAt(g *gitx.Repo, treeish, runID string, attempt int) (*Record, error) | |||
| 283 | 283 | // only partly: a record that does not validate is reported, not skipped, because a | |
| 284 | 284 | // half-read history is worse than a refused rebuild. | |
| 285 | 285 | // | |
| 286 | // It does not re-verify the commit signature. The push verified it, under a key the | ||
| 287 | // account held then; keys are retired, and a reader who wants the proof asks git | ||
| 288 | // (`verify-commit` against a roster they trust). A rebuild that re-verified would | ||
| 289 | // refuse to restore history the moment somebody rotated a key. | ||
| 286 | // There is nothing to re-verify: a record is attributable because `pre-receive` refused | ||
| 287 | // any push that did not come from the account it names, and that decision is in the push | ||
| 288 | // log, not in the object. A rebuild therefore restores history without asking anybody's | ||
| 289 | // permission, which is the property the finished half of the queue depends on. | ||
| 290 | 290 | func Records(g *gitx.Repo, ref string) ([]Record, error) { | |
| 291 | 291 | paths, err := recordPaths(g, ref) | |
| 292 | 292 | if err != nil { | |