| @@ -453,6 +453,7 @@ gitbay mr checkout 4 # local branch mr/4 from the MR head |
| 453 | gitbay mr review 4 --approve # or --request-changes / --comment |
453 | gitbay mr review 4 --approve # or --request-changes / --comment |
| 454 | gitbay mr label 4 --add bug --remove wontfix |
454 | gitbay mr label 4 --add bug --remove wontfix |
| 455 | gitbay mr merge 4 [--strategy ff|merge|squash|rebase] |
455 | gitbay mr merge 4 [--strategy ff|merge|squash|rebase] |
| |
456 | gitbay mr merge 4 --when-ready # merge once the gates pass; --cancel dequeues |
| 456 | gitbay mr close 4 |
457 | gitbay 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 |
| 511 | review= says when a verdict is advisory, which it is from anyone |
512 | review= says when a verdict is advisory, which it is from anyone |
| 512 | without write access: the gates do not count it. |
513 | without write access: the gates do not count it. |
| 513 | |
514 | |
| |
515 | =mr merge <n> --when-ready= queues the merge and merges once the gates |
| |
516 | pass, or at once if they already do. It is tried again when a status |
| |
517 | is reported on the head, a review is submitted, a thread is resolved, |
| |
518 | the request is marked ready, and the source branch is pushed; a push |
| |
519 | by someone who can write to the target keeps it queued, and the new |
| |
520 | head has to pass on its own. The merge is made as the user who queued |
| |
521 | it, with their rights checked at that moment. Anything the queuer can |
| |
522 | fix (an unmet gate, a conflict, a branch behind a |
| |
523 | =require_signed_commits= target that needs a rebase) leaves it queued |
| |
524 | with the reason shown on =mr show= and the page. |
| |
525 | |
| |
526 | The queue is bound to the credential it was made with. It is dequeued, |
| |
527 | with 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 | |
| |
537 | An expiring key or token cannot queue a merge; use one without an |
| |
538 | expiry, 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 | |
| 514 | Those gates apply to =mr merge=. A direct push to a protected branch |
542 | Those gates apply to =mr merge=. A direct push to a protected branch |
| 515 | passes none of them until =require-mr on=: then an existing protected |
543 | passes none of them until =require-mr on=: then an existing protected |
| 516 | branch refuses every push, including =repo commit-file= and the web |
544 | branch refuses every push, including =repo commit-file= and the web |