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.
Test the merge result before landing it
e5478085e5b53a2892d0649d6f07c6f0a5653378 · Keenan Nemetz · 11d ago · parent db5e4382
Test the merge result before landing it A protected branch could receive a non-fast-forward landing whose tree was never built: the gate asked for checks on the request head, and the merge commit was made at landing time. A pushed merge with the right parents but extra content was accepted too. Publish the merge commit under refs/vole/candidates/, test it as the base branch, and make the gate require its results. Approvals name the head and the base branch, so a moved base retests without a new approval. A merger who clicks while that run is still going waits for it instead of clicking again. A pushed merge commit now has to carry exactly the tree a clean merge would produce. Closes: 01M61QQ56TESQ1HTMB1Z5C3733
docs/runner.md +3−2
| @@ -219,8 +219,9 @@ The cache lives under `--dir/cache`, keyed by repository, trust, and image: | |||
| 219 | 219 | `<dir>/cache/<repo>/<direct|contrib>/<image>`. The parts matter. A cache is shared | |
| 220 | 220 | mutable state: a repository never sees another's, and a contributor branch gets its | |
| 221 | 221 | own namespace, so a branch nobody has vouched for cannot seed the cache a protected | |
| 222 | branch builds into. The image is part of the key so a cache built with one | ||
| 223 | toolchain is not consumed by another. | ||
| 222 | branch builds into. A combined result derived from a contributor branch belongs to | ||
| 223 | that contributor's namespace for the same reason. The image is part of the key so a | ||
| 224 | cache built with one toolchain is not consumed by another. | ||
| 224 | 225 | ||
| 225 | 226 | Namespaces are evicted whole and least-recently-written first, so a cache is never | |
| 226 | 227 | left half-deleted — a Go module cache missing one file is a checksum error deep in | |