Migrate from Bulldozer to Mergify

Map Bulldozer configuration and behaviors to Mergify rules and merge queue.


Bulldozer focuses on automerging pull requests based on labels, reviews, and status checks. Mergify covers that and more, with a powerful rule engine and a production‑grade merge queue.

This page shows a practical, minimal‑diff path to move from Bulldozer to Mergify.

  1. Keep your labels and branch protections as‑is
  2. Translate Bulldozer settings to one or two Mergify rules
  3. Start with a dry‑run or low‑impact setup and expand gradually

Common Bulldozer config → Mergify

Section titled Common Bulldozer config → Mergify

Example Bulldozer snippet:

merge:
  trigger:
    label: ["merge when ready"]
    branch_patterns: ["feature/.*"]
  method: squash
  required_statuses:
    - "ci/circleci: ete-tests"

Equivalent Mergify:

pull_request_rules:
  - name: Automerge when ready
    conditions:
      - label = merge when ready
      - head ~= ^feature/
      - "check-success = ci/circleci: ete-tests"
    actions:
      merge:
        method: squash

Notes:

  • Checks map to check-success = <name> (or check-skipped, check-neutral)
  • Required labels map to label = <name> conditions
  • Approvals map to review count or specific reviewers
Section titled Enabling the Merge Queue (optional but recommended)

If you rely on Bulldozer plus manual rebases to keep PRs up‑to‑date, Mergify’s Merge Queue removes that toil — with even more optimizations.

Add a queue rule and switch to queueing instead of immediate merge:

queue_rules:
  - name: default
    autoqueue: true
    queue_conditions:
      - base = main
      - check-success = ci
  • The queue keeps PRs updated and merges them only after passing on the latest version of the base branch

  • You can set priorities, batches, and parallel checks later

  • Merge methods: squash/merge/rebase → supported

  • Delete branch after merge → delete_head_branch action

  • Rebase/update before merge → rebase/update actions or merge queue update_method

  • Require labels → conditions label =

  • Restrict by authors/paths → conditions author =, files ~=, etc.