Migrate from Bulldozer to Mergify
Move from Bulldozer automerge to Mergify's Merge Queue for safer, faster merges.
Bulldozer focuses on automerging pull requests based on labels, reviews, and status checks. Mergify’s Merge Queue covers that and more, with automatic PR updates, prioritization, batching, and parallel checks.
This page shows a practical path to move from Bulldozer to Mergify’s Merge Queue.
Typical Migration Plan
Section titled Typical Migration Plan- Keep your labels and branch protections as-is
- Set up a Mergify merge queue with conditions matching your Bulldozer config
- Start with a low-impact setup and expand gradually
Common Bulldozer config → Mergify Merge Queue
Section titled Common Bulldozer config → Mergify Merge QueueExample Bulldozer snippet:
merge: trigger: label: ["merge when ready"] branch_patterns: ["feature/.*"] method: squash required_statuses: - "ci/circleci: ete-tests"Equivalent Mergify configuration:
merge_protections_settings: auto_merge_conditions: - label = merge when ready - head ~= ^feature/
merge_protections: - name: bulldozer-equivalent if: - base = main - head ~= ^feature/ success_conditions: - "check-success = ci/circleci: ete-tests"
queue_rules: - name: default merge_method: squashNotes:
-
auto_merge_conditionsis where Bulldozer’striggergoes: a pull request that matches it is queued without anyone commenting@mergifyio queue. Set the field totrueinstead and every pull request is queued, including ones that match no merge protection rule. Those reach the queue gated by your branch protections and the queue’s ownqueue_conditionsalone -
Bulldozer’s
required_statusesbecomecheck-success = <name>conditions (orcheck-skipped,check-neutral) undersuccess_conditions, where they gate both entry to the queue and the merge -
Required labels map to
label = <name>conditions -
Approvals map to review count or specific reviewers
-
The merge queue keeps PRs updated automatically, so no manual rebases are needed
Going Further with Merge Queue
Section titled Going Further with Merge QueueOnce you have basic automerge working, you can take advantage of features Bulldozer doesn’t offer:
-
Priorities: urgent PRs jump ahead in the queue
-
Batches: merge multiple PRs at once to reduce CI load
-
Parallel checks: test multiple queue entries simultaneously
Feature parity quick table
Section titled Feature parity quick table-
Merge methods: squash/merge/rebase → supported via
merge_method -
Delete branch after merge → use GitHub’s “Automatically delete head branches” repository setting
-
Rebase/update before merge → automatic in merge queue
-
Require labels →
label =inauto_merge_conditionsto trigger the queue, or insuccess_conditionsto require the label as a merge protection -
Restrict by authors/paths →
author =,files ~=, etc. insuccess_conditionsorif
Was this page helpful?
Thanks for your feedback!