Fala dev! Nada como ter seu código versionado e armazenado de forma segura em um…
Git Flow vs Trunk Based: uma comparação de estratégias4 min read
Categoria: Engenharia de Softwares Git
A forma como as equipes de desenvolvimento gerenciam as mudanças de código pode ter um grande impacto na qualidade do produto e na eficiência da equipe. Git Flow e Trunk Based Development são duas estratégias populares para um workflow (fluxo de trabalho) organizado para as equipes de desenvolvimento de software. Neste artigo, vamos explorar o que cada estratégia oferece e como elas se comparam.
O que é Git Flow?
O Git Flow usa uma abordagem estruturada com várias branches para diferentes propósitos, são eles:
- main/master
- develop
- feature branch
- release
- hotfix
A ideia é que você desenvolva novas funcionalidades em suas próprias branches (feature branches), então as mescla (fazer o merge) em uma branch de desenvolvimento (develop), normalmente via PR. Quando estiver pronto para preparar um novo lançamento, você cria uma branch de lançamento a partir da branch de desenvolvimento (o release branch).
Correções urgentes são tratadas em hotfix branches que são criados a partir da branch main/master, que depois de integrados no branch main/master devem ser mergados para o branch develop, também.
A imagem abaixo mostra o fluxo completo do GitFlow:
O que é Trunk Based Development?
Trunk Based Development, por outro lado, é uma estratégia que tenta minimizar a complexidade de lidar com múltiplos branches. Nesta abordagem, todos os desenvolvedores trabalham em uma única branch – o tronco (trunk/master/main). Portanto, eis o branches possíveis nesta abordagem:
- main/master
- feature branch
- hotfix
Os desenvolvedores criam branches de curta duração para desenvolver novas funcionalidades (os features branches) ou correções (hot-fix), mas essas branches são mescladas de volta ao tronco com frequência – geralmente pelo menos uma vez por dia através da abertura de PRs. A ideia é acelerar o processo de entrega das features.
A imagem a seguir mostra um exemplo de como funciona o Trank Based Development:
Comparação entre Git Flow e Trunk Based Development
– Complexidade
Uma das principais diferenças entre Git Flow e Trunk Based Development é a complexidade.
Git Flow é mais complexo porque envolve o gerenciamento de várias branches. Isso pode ser poderoso e flexível, mas também significa que há mais oportunidades para erros e conflitos.
Trunk Based Development é mais simples porque todos trabalham na mesma branch. Isso pode tornar o processo de desenvolvimento mais suave e menos propenso a erros, mas também significa que todos os desenvolvedores precisam estar em sincronia e comprometer-se com a integração contínua.
– Ritmo de Desenvolvimento
Outra diferença chave é o ritmo de desenvolvimento.
Com o Git Flow, é fácil para os desenvolvedores trabalharem em suas próprias funcionalidades em seu próprio ritmo, pois cada funcionalidade tem sua própria branch.
Trunk Based Development incentiva uma cultura de entrega contínua, onde o código é integrado e testado frequentemente. Isso pode resultar em um ritmo de desenvolvimento mais rápido, mas também requer uma disciplina rigorosa de testes e integração.
– Gerenciamento de Lançamentos
O Git Flow tem um forte foco no gerenciamento de lançamentos. A branch de lançamento oferece um espaço para preparação e teste final antes de um lançamento, e a branch hotfix permite correções rápidas para problemas críticos.
Trunk Based Development não tem um processo de lançamento tão estruturado. Em vez disso, qualquer commit no tronco que passa por todos os testes pode ser considerado pronto para ser lançado. Portanto, vale considerar esta abordagem para equipes mais experientes e que conheçam bem o projeto em que estão trabalhando.
Conclusão
Tanto Git Flow quanto Trunk Based Development têm suas vantagens e desvantagens. Git Flow oferece uma estrutura consistente para gerenciamento de lançamentos, mas é mais complexo e pode ser mais propenso a conflitos.
Trunk Based Development é mais simples e pode resultar em um ritmo de desenvolvimento mais rápido, mas requer uma forte cultura de testes e integração contínua, o que significa, normalmente, a necessidade de equipes mais experientes e com conhecimentos em técnicas como TDD, teste integrado e até mesmo metodologias de desenvolvimento como o XP (eXtreme Programming).
A escolha entre Git Flow e Trunk Based Development dependerá das necessidades da sua equipe, da natureza do seu projeto e da sua cultura de desenvolvimento. O mais importante é escolher uma estratégia que apoie a eficiência e a qualidade do desenvolvimento.
Fontes:
- Comparing Git Workflows: What You Should Know – https://www.atlassian.com/git/tutorials/comparing-workflows
- Git Flow: entenda o que é, como e quando utilizar – https://www.alura.com.br/artigos/git-flow-o-que-e-como-quando-utilizar
- Trunk-based development – https://www.atlassian.com/continuous-delivery/continuous-integration/trunk-based-development
Um comentário em “Git Flow vs Trunk Based: uma comparação de estratégias4 min read”