Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

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

ci/agent/agent.go +1−4

@@ -601,10 +601,7 @@ func (s *runnerSession) cacheFor(job *runnerJob) []container.Mount {
601 601 // one contributor's branch must not be able to seed another's cache or the one a
602 602 // protected branch builds into. Namespacing by account means a contributor's
603 603 // cache follows them across their branches and nobody else can write it.
604 trust := "direct"
605 if name, contributor := access.ContributorRefName(job.Ref); contributor {
606 trust = "contrib-" + name
607 }
604 trust := access.TrustNamespace(job.Ref)
608 605 ns := jobcache.Namespace(s.cacheRoot, job.Repo, trust, jobcache.ImageKey(job.ImageSHA, job.Image))
609 606 if err := os.MkdirAll(ns, 0o755); err != nil {
610 607 fmt.Fprintf(os.Stderr, "vole runner: cannot prepare a cache for %s: %v\n", job.Repo, err)