Commit 8b73af24fa

8b73af24faa9b2d2fbac94cb9fcbb3bee3384b01

parent: c16661f662

Verified · cmc ci/build: success ci/test: success

cmc <hello@cleberg.net> · 2026-09-29 03:35 UTC

wiki, changelog: mr merge --when-ready

Closes #289

Layout: unified · split

.gitbay/wiki/Parity.org +1
@@ -40,6 +40,7 @@ browser-only and the iOS build screen unable to say more than the log.
40| resolve a thread | yes | yes | yes | 40| resolve a thread | yes | yes | yes |
41| comment on a diff line | yes | yes | yes | 41| comment on a diff line | yes | yes | yes |
42| merge (all strategies) | yes | yes | yes | 42| merge (all strategies) | yes | yes | yes |
43| merge when ready, cancel | yes | yes | no |
43| close | yes | yes | yes | 44| close | yes | yes | yes |
44| close in favour of another | yes | yes | yes | 45| close in favour of another | yes | yes | yes |
45| create | yes | yes | yes | 46| create | yes | yes | yes |
.gitbay/wiki/Users.org +28
@@ -453,6 +453,7 @@ gitbay mr checkout 4 # local branch mr/4 from the MR head
453gitbay mr review 4 --approve # or --request-changes / --comment 453gitbay mr review 4 --approve # or --request-changes / --comment
454gitbay mr label 4 --add bug --remove wontfix 454gitbay mr label 4 --add bug --remove wontfix
455gitbay mr merge 4 [--strategy ff|merge|squash|rebase] 455gitbay mr merge 4 [--strategy ff|merge|squash|rebase]
456gitbay mr merge 4 --when-ready # merge once the gates pass; --cancel dequeues
456gitbay mr close 4 457gitbay mr close 4
457#+end_src 458#+end_src
458 459
@@ -511,6 +512,33 @@ merge= names every unmet gate at once rather than the first. =mr
511review= says when a verdict is advisory, which it is from anyone 512review= says when a verdict is advisory, which it is from anyone
512without write access: the gates do not count it. 513without write access: the gates do not count it.
513 514
515=mr merge <n> --when-ready= queues the merge and merges once the gates
516pass, or at once if they already do. It is tried again when a status
517is reported on the head, a review is submitted, a thread is resolved,
518the request is marked ready, and the source branch is pushed; a push
519by someone who can write to the target keeps it queued, and the new
520head has to pass on its own. The merge is made as the user who queued
521it, with their rights checked at that moment. Anything the queuer can
522fix (an unmet gate, a conflict, a branch behind a
523=require_signed_commits= target that needs a rebase) leaves it queued
524with the reason shown on =mr show= and the page.
525
526The queue is bound to the credential it was made with. It is dequeued,
527with the reason on the request's timeline, when:
528
529- the queuer loses write access or their account is disabled;
530- the SSH key or API token it was queued with is removed, revoked,
531 expires, or no longer has full scope (a merge queued from the web
532 rests on the account alone);
533- someone who cannot write to the target pushes to the source branch
534 or retargets the request;
535- the source branch is deleted, or the request is closed.
536
537An expiring key or token cannot queue a merge; use one without an
538expiry, or the web. =mr merge <n> --cancel= dequeues without closing.
539=merge= and =squash= are refused at queue time on a
540=require_signed_commits= repository.
541
514Those gates apply to =mr merge=. A direct push to a protected branch 542Those gates apply to =mr merge=. A direct push to a protected branch
515passes none of them until =require-mr on=: then an existing protected 543passes none of them until =require-mr on=: then an existing protected
516branch refuses every push, including =repo commit-file= and the web 544branch refuses every push, including =repo commit-file= and the web
CHANGELOG.org +12
@@ -29,6 +29,18 @@ anything beyond "replace the binary and restart" is needed.
29 the scratch-repository test: a build failing SSH logins must not 29 the scratch-repository test: a build failing SSH logins must not
30 lock the runner out. Run it before pointing the runner back at real 30 lock the runner out. Run it before pointing the runner back at real
31 repositories; the Admin page has the steps and the rollback. (#260) 31 repositories; the Admin page has the steps and the rollback. (#260)
32- =mr merge <n> --when-ready= queues a merge until the gates pass,
33 merging as the queuing user with their rights checked then; tried on
34 a status, a review, a resolved thread, =mr ready= and a push to the
35 source branch. A refusal the queuer can fix, such as a branch behind
36 a =require_signed_commits= target, keeps it queued with the reason
37 on =mr show= and the page. The queue is bound to the key or token it
38 was made with: removing, revoking, expiring or narrowing it
39 dequeues, as do losing write access, a push or retarget by someone
40 who cannot write to the target, deleting the source branch, and
41 closing. An expiring credential cannot queue. =--cancel= dequeues.
42 =mr show=, =mr list= and the dashboard carry =queued=. Migration
43 0067 (#289).
32 44
33* v1.37.0 — 2026-09-29 45* v1.37.0 — 2026-09-29
34 46