Queue Mode

Merge can be configured in single or parallel mode depending on your needs.

Single / Parallel Mode

Merge can support two different modes - Single and Parallel mode. The mode affects how PRs are enqueued when they enter the queue and what is required for a PR to begin testing.

Parallel Mode

In this mode, Trunk Merge will dynamically create new merge queues for PRs that affect different parts of your code base. To support this, you will be required to provide a list of impacted targets that result from code changes in the PR. Trunk simplifies this by offering a Merge GitHub action (workflow) using Bazel to automatically generate and upload the necessary list of impacted targets. For guidance on using other build systems and details on identifying impacted targets, please refer to Impacted Targets. Trunk Merge will then examine the provided list of impacted targets for all PRs in the existing merge queues and only make your PR depend in the other PRs it actually affects.

For example, the following PRs:

  • PR 1 with impacted target list [src/protos/]

  • PR 2 with impacted target list [src/user_service/, src/protos/]

  • PR 3 with impacted target list [docs/]

would be split into two different queues in Parallel mode

Single Mode

In this mode, PRs will always be queued directly behind one another in a first-in first-out fashion, regardless of what parts of code your PR actually affects. Uploading impacted targets is not required in this mode.

For example, the above 3 PRs would look like this in the Merge Queue in Single mode

Switching Modes

Merge can be swapped between Single and Parallel mode at any time. If there are no PRs in the merge queue when switching, the switch will be immediate. If there are PRs in the queue, then Merge will go into the Switching Modes state, where it'll wait for all currently testing PRs to merge before switching modes. During this time, PRs will not be able to enter the queue.

Switching modes can be done from the Merge Queue Mode section of the Settings > Repositories > repo name > Merge panel

Last updated