Skip to content
Latchkey

O que é uma merge queue?

Uma merge queue serializa pull requests e testa cada um contra a branch main mais recente antes do merge, prevenindo quebras surpresa.

Em um repositório movimentado, dois pull requests podem cada um passar no CI por conta própria mas quebrar quando ambos entram, porque nenhum foi testado contra o outro. Uma merge queue fecha essa lacuna ao testar mudanças na ordem em que elas realmente serão mescladas.

O problema que ela resolve

O CI normalmente testa um pull request contra a branch main como ela estava quando o PR foi aberto. Se a main avança, ou outro PR é mesclado primeiro, a combinação testada não é mais a que realmente entra. Duas mudanças individualmente verdes podem se combinar em uma main vermelha, quebrando o build para todos.

Como uma merge queue funciona

  • PRs aprovados entram numa fila em vez de fazer merge imediatamente.
  • A fila testa cada PR contra a ponta atual da main mais os que estão à sua frente.
  • Se a combinação passa, o PR é mesclado automaticamente.
  • Se falha, aquele PR é removido e a fila continua.

Um exemplo

Três pull requests aprovados entram na fila. A fila builda e testa o PR A contra a main, depois o PR B contra a main-mais-A, depois o PR C contra a main-mais-A-e-B. Cada um é verificado no exato contexto em que vai entrar, de modo que o resultado mesclado tem garantia de passar, sem main quebrada.

Por que previne builds quebrados

Ao testar a ordem real de merge em vez de snapshots desatualizados, uma merge queue garante que o que entra na main foi de fato verificado em conjunto. Isso mantém a branch main verde mesmo quando muitas mudanças são mescladas por hora, o que é essencial para trunk-based development em escala.

O custo

Uma merge queue roda mais CI, cada mudança na fila é testada em contexto, então consome mais tempo de runner. Runners rápidos, paralelos e eficientes em custo ajudam a manter esse overhead razoável, o que é parte de por que times em escala se importam com o desempenho dos runners.

Principais conclusões

  • Uma merge queue testa cada mudança contra a ordem real de merge.
  • Ela impede que dois PRs verdes se combinem em uma main quebrada.
  • Ela permite alta vazão de merge mantendo a main saudável.

Guias relacionados