O Que É Trunk-Based Development?
Trunk-based development é uma estratégia de branching em que todos integram pequenas mudanças em uma única branch principal com frequência, evitando branches de vida longa.
O trunk-based development mantém a equipe trabalhando perto de uma branch compartilhada, o trunk. Em vez de feature branches que vivem por semanas, os desenvolvedores fazem pequenas mudanças e as fazem merge diariamente ou até várias vezes ao dia. É o modelo de branching que melhor sustenta uma integração contínua rápida.
A ideia central
Há um trunk, geralmente chamado de main, que permanece sempre lançável. O trabalho acontece em branches de vida muito curta ou diretamente no trunk atrás de feature flags, e faz merge de volta rapidamente. O objetivo é minimizar o tempo que as mudanças passam afastadas do trunk.
Um workflow de branch curta
Uma mudança sai em uma branch, passa por review e testes, e faz merge dentro de um dia ou algo assim.
git switch -c fix/typo
git commit -am "Fix typo in header"
# open PR, pass CI, merge same dayPor que funciona
Como todos integram com frequência, os merges permanecem minúsculos e os conflitos raros. O trunk reflete a realidade mais recente o tempo todo, então não há uma integração big-bang dolorosa. Features incompletas ficam escondidas atrás de feature flags em vez de estacionadas em branches longas.
Trunk-based development e CI/CD
Esse modelo depende de um pipeline rápido e confiável: se toda pequena mudança faz merge rápido, o CI precisa verificar cada uma em minutos e manter o trunk verde. Em troca, o trunk fica sempre perto de ser lançável, que é exatamente o que a entrega contínua precisa. Runners rápidos tornam o loop de feedback apertado prático.
Fazendo funcionar
- Mantenha as branches vivas por horas ou um dia, não semanas.
- Esconda o trabalho inacabado atrás de feature flags.
- Invista em um CI rápido para que merges frequentes permaneçam verificados.
- Trate um trunk quebrado como um evento de parar a linha.
Principais conclusões
- O trunk-based development integra pequenas mudanças em uma branch principal com frequência.
- Ele minimiza branches de vida longa e os conflitos que elas causam.
- Depende de um CI rápido para manter o trunk sempre lançável e verde.