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.
4040| resolve a thread | yes | yes | yes |
4141| comment on a diff line | yes | yes | yes |
4242| merge (all strategies) | yes | yes | yes |
43| merge when ready, cancel | yes | yes | no |
4344| close | yes | yes | yes |
4445| close in favour of another | yes | yes | yes |
4546| 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
453453gitbay mr review 4 --approve # or --request-changes / --comment
454454gitbay mr label 4 --add bug --remove wontfix
455455gitbay mr merge 4 [--strategy ff|merge|squash|rebase]
456gitbay mr merge 4 --when-ready # merge once the gates pass; --cancel dequeues
456457gitbay mr close 4
457458#+end_src
458459
@@ -511,6 +512,33 @@ merge= names every unmet gate at once rather than the first. =mr
511512review= says when a verdict is advisory, which it is from anyone
512513without write access: the gates do not count it.
513514
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
514542Those gates apply to =mr merge=. A direct push to a protected branch
515543passes none of them until =require-mr on=: then an existing protected
516544branch 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.
2929 the scratch-repository test: a build failing SSH logins must not
3030 lock the runner out. Run it before pointing the runner back at real
3131 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).
3244
3345* v1.37.0 — 2026-09-29
3446