Merge when ready
Arm a pull request and Limn merges it when GitHub says it can, with your consent at every step.
On this page
Merge when ready lets you approve a merge now and have it happen later. You arm a pull request that is waiting on something, such as checks still running, a required review or a branch that is behind. Limn watches it, updates it from the base branch if it needs to, and merges it as soon as GitHub allows. If the code changes after you armed it, Limn does not merge it.
#Arm a pull request
- Open the pull request’s Overview tab and press Show actions. You can also arm from a card on the Pending board.
- Press Merge when ready (or Queue when ready on a repository with a merge queue). Limn asks GitHub for the live merge state.
- Read what Limn will do, for example “Updates from trunk if needed and merges when checks pass — while Limn is running.”, and press Arm auto-merge.
The button is offered only when something is in the way that can clear by itself, and only where you can push to the repository. A pull request that conflicts, or that must wait for another open pull request to merge first, cannot be armed.
#What Limn does while it waits
Limn checks every armed pull request every two minutes while it is running. On each check it:
- stops if the pull request has closed or merged, if its base branch changed, or if you no longer have permission to merge;
- stops if anyone pushed a new commit to the branch. Arming is consent to merge the code you saw, not code that came later. The only exception is the update that Limn itself made from the base branch;
- updates the branch from the base branch once, if it is behind and the repository requires it;
- waits while checks run, reviews are missing or branch protection is not met;
- merges when GitHub says the pull request can merge, checking first that you have not cancelled.
The toasts in the bottom right show what each armed pull request is doing: for example Waiting for CI, Blocked: needs approval, Updating the branch, Waiting its turn or Merged automatically. When an arm stops, it says why: Auto-merge disarmed — the branch moved, Auto-merge stopped, Auto-merge expired or Auto-merge failed.
#One at a time on each repository
When you arm several pull requests on one repository, Limn lands them one at a time, in the order you armed them. Each one is updated against the base branch as it now stands, after the one before it merged. The rest show Waiting its turn with their place, for example “2 of 5 on this repo”. If the first in line has failing checks or conflicts, which Limn cannot fix by waiting, it steps aside and lets the next one through, and keeps its place. See Merge queues.
#Cancel
Press Cancel auto-merge on the Overview tab, or Cancel in the toast. On a merge-queue repository the button is Cancel & dequeue, which also takes the pull request out of GitHub’s queue. Cancelling always wins: Limn checks again just before it merges.
#Why it helps
GitHub’s own auto-merge refuses pull requests that do not already meet the merge rules, which are exactly the ones you want to arm. Limn’s version waits out the blockers for you and still merges only the code you saw. Dependency updates can be armed by a rule instead of by hand; see Dependency automation.