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

client/remote.go +18

@@ -261,6 +261,24 @@ func (a *Actor) Page(kind, id, anchor string) string {
261 261 return u
262 262 }
263 263
264 // ChangeStatus asks the instance whether the combined result for a change request
265 // has been tested. It answers one line per fact ("combined: ...", "merge: ..."),
266 // which the show command prints as it received them.
267 func ChangeStatus(gitDir, remote, id string) (string, error) {
268 host, port, path, err := SSHTarget(gitDir, remote)
269 if err != nil {
270 return "", err
271 }
272 if RepoNameFromPath(path) == "" {
273 return "", fmt.Errorf("%s does not name a repository", remote)
274 }
275 out, err := RunSSH(host, port, "vole-change-status "+path+" "+id)
276 if err != nil {
277 return "", err
278 }
279 return strings.TrimSpace(out), nil
280 }
281
264 282 // MergeChange asks the instance to land a change request, and returns the server's
265 283 // one-line answer.
266 284 //