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/vole.git

Write over SSH with a registered key:

git clone ssh://git@rodent.software: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

server/web/web.go +4

@@ -46,6 +46,10 @@ type Web struct {
46 46 // AllowCI is the server's queue-side operation: record a maintainer's approval
47 47 // for one contributor tip and enqueue it. The web owns the form and ACL check.
48 48 AllowCI func(repo, ref, sha, approver string) error
49 // EnsureCandidate publishes and queues the combined result for a request. The
50 // merge handler calls it before arming so the first look does not wait for the
51 // reconciler, and so a Merge click is useful even before the next tick.
52 EnsureCandidate func(repo, request string) error
49 53 // RenameRepo and DeleteRepo are the instance operations that also move the
50 54 // index, queue, LFS namespace, and locks. The web owns the form and ACL check.
51 55 // DeleteRepo takes the account so the deletion is recorded against it.