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:

GitFlow em ação

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:

Trunk 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:

Um comentário em “Git Flow vs Trunk Based: uma comparação de estratégias4 min read

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *