A disponibilidade geral da fila de merge do GitHub significa dar adeus aos engarrafamentos nos branches mais movimentados das equipes. Agora, não é mais necessário correr para fazer o merge de pull requests antes que outra pessoa faça o mesmo, basta ativar a fila para otimizar a velocidade do trabalho.
Além disso, qualquer equipe que faça parte de uma organização gerenciada com repositórios públicos e utilize o GitHub Enterprise Cloud poderá habilitar esse recurso em seu respectivo repositório e começar a simplificar pull requests de sua equipe no mesmo momento. Antes, era necessário executar verificações de Integração Contínua (CI) para cada atualização e, caso outra pessoa fizesse um merge comalterações, era necessário iniciar o processo novamente.
Fila de merge: novo recurso para melhorar a velocidade da equipe
A programação colaborativa é poderosa. Mas para estar no estado mais otimizado da equipe, é necessário um gerenciamento automatizado de branches que permita que várias pessoas desenvolvedoras confirmem o código diariamente, sem frustrações – o que pode acontecer se o branch estiver ocupado com muitos membros da equipe integrando o mesmo acesso do commit. Isso pode ser frustrante para o time, além de também atrapalhar a velocidade de envio.
Pensando nisso, o GitHub criou a fila de merge de pull requests. Com o objetivo de reduzir a tensão entre a estabilidade e a velocidade do branch. Essa funcionalidade visa garantir que pull requests sejam compatíveis com outras alterações anteriores e enviar alertas se algo der errado. Ou seja, equipes podem se concentrar em outras tarefas, como escrever, enviar e fazer commits.
Como funciona a fila de merge?
A fila de merge foi projetada para equipes de alto desempenho em que vários usuários se comprometem regularmente com um único branch. Antes, as pessoas engenheiras precisariam tentar fazer merge diretamente em um branch já ocupado, potencialmente entrando em conflitos de código e, em seguida, entrando em um ciclo de retrabalho.
Com a fila de merge do GitHub, é criado um branch temporário que contém:
- As últimas alterações do branch base
- As alterações de outros pull requests já na fila
- As alterações do pull request
Dessa forma, o ciclo de CI começa com a expectativa de que todas as verificações de status necessárias devem passar antes do merge do branch e pull requests que representa. A fila de merge é um controlador de tráfego de branches.
De acordo com o GitHub, a Block Inc. já começou a utilizar esse fluxo de trabalho simplificado com a fila de merge. Para Jon Graves, Gerente de Engenharia da Block Inc., a ferramenta tem ajudado efetivamente no dia a dia. “Tínhamos falhas recorrentes de compilação pós-fusão em nosso monorepo várias vezes por semana e a fila de merge praticamente eliminou todas as falhas de compilação nessa categoria. Isso reduziu muito nossa carga de plantão e diminuiu o atrito da experiência de nossos desenvolvedores durante seus fluxos de trabalho diários”, afirmou.
Como começar com a fila de merge?
Para melhorar o desempenho e a velocidade da equipe, basta habilitar essa nova proteção de branch.
Para administradores do repositório:
- É possível ativar a configuração de proteção de um branch em questão na opção “Require merge queue” (exigir fila de merge) e depois definir preferências para a fila de merge, como método, limites, aceitar merges apenas de pull requests sem falhas, tempo limite de verificação de status, entre outras.
Para engenheiros:
Ao abrir o pull request a ser adicionado à fila, basta clicar em ‘Merge when ready’.
- Para visualizar a fila de merge, na página de branches do repositório, é só clicar no link “pull requests queued to merge”.
Caso aconteça de um merge falhar, o pull request em questão será removido da fila e uma notificação será enviada à pessoa autora para verificação. Para obter mais informações sobre como acessar e configurar a fila de merge para branches, o GitHub disponibilizou uma página sobre o tema em sua documentação.
Ao habilitar a ferramenta, pessoas desenvolvedoras podem experienciar menos engarrafamentos nos branches e dedicar mais tempo à colaboração eficiente.
*Fonte: GitHub