Fala aeeeee! Se você usa Git como sistema de controle de versões, com certeza deve…
Gitflow explicado3 min read
Categoria: Engenharia de Softwares Ferramentas de Desenvolvimento Git
Fala pessoal \o Hoje, vamos falar um pouco mais sobre workflows e embora já tenhamos falado um pouco sobre o GitFlow nesta publicação, hoje, vamos falar especificamente do GitFlow.
Gitflow é um modelo de ramificação para Git, criado por Vincent Driessen. Ele atraiu muita atenção porque é muito adequado para colaboração e dimensionamento da equipe de desenvolvimento. A ideia deste fluxo é manter branches separados com cada um tendo um propósito específico para o momento do desenvolvimento.
Branches em Gitflow
O Gitflow define vários tipos de branches para lidar com diferentes aspectos do desenvolvimento. São elas:
1. Master
O branch master
contém o código de produção. Cada commit nessa branch é um lançamento de uma nova versão do software.
2. Develop
O branch develop
serve como um branch para desenvolvimento geral e contém as últimas mudanças e melhorias no código. O código aqui é estável, mas ainda não está pronto para produção.
3. Feature Branches
Esses branches são criados a partir do develop
e são usados para desenvolver novas funcionalidades.
4. Release Branches
Criado a partir do develop
, esse branch é usado para preparar o código para um lançamento, permitindo testes finais e ajustes.
5. Hotfix Branches
Esses branches são criados a partir do master
e são usados para correções rápidas em produção.
Fluxo de Trabalho
- Criação de Feature Branch: Um novo branch de funcionalidade é criado a partir do
develop
. - Desenvolvimento e Completude: A funcionalidade é desenvolvida e testada.
- Merge com Develop: O branch de funcionalidade é mesclado de volta ao
develop
. - Preparação para Release: Um novo branch de release é criado a partir do
develop
. - Testes Finais: São realizados os testes finais no branch de release.
- Merge com Master e Tagging: O branch de release é mesclado com
master
e uma nova tag é criada. - Hotfix: Caso surjam problemas críticos, um hotfix é aplicado diretamente ao
master
.
Veja abaixo uma animação com o fluxo acima acontecendo:
Vantagens de usar o Gitflow
- Estrutura Clara: fornece um modelo de desenvolvimento bem definido.
- Isolamento de Funcionalidades: facilita o trabalho em diferentes funcionalidades simultaneamente.
- Facilidade de Hotfixes: permite correções rápidas em um ambiente de produção.
Desvantagens de usar o GiFlow
- Curva de Aprendizado: para novos membros da equipe ou pessoas não familiarizadas com o Git, o GitFlow pode ser complicado de entender e seguir inicialmente.
- Gestão de Branches: manter várias branches (features, hotfixes, releases, develop, master) pode tornar o repositório mais difícil de gerir.
Conclusão
O Gitflow é uma abordagem de gestão de fluxo de trabalho muito eficiente. Porém, ela requer uma gestão ativa de todos os membros para que o fluxo funcione corretamente. Em cenários complexos de desenvolvimento de softwares por ciclos (Sprints, por exemplo) o Gitflow pode ser um grande aliado.
Mas, esteja tento para o cenário em que existe dois ou mais times trabalhando no mesmo repositório com Gitflow, pois nesta situação podem ocorrer filas de release ou até mesmo a necessidade de release com uso de feature flag (para que um equipe, não afete o prazo de entrega da outra).
Fontes:
- Gitflow(Danielkummer): https://danielkummer.github.io/git-flow-cheatsheet/index.pt_BR.html
- Gitflow explained: https://github.com/fabioalmeida100/gitflow-explained
- Gitflow Workflow: https://www.atlassian.com/br/git/tutorials/comparing-workflows/gitflow-workflow