Git Flow é um método ou um modelo utilizado por equipes de desenvolvimento de soluções que auxilia na organização do versionamento de um código. Alguns profissionais o chamam de workflow ou fluxo de trabalho que deixa o processo de criação de hotfixes e features mais seguro e evita a perda de dados relevantes.
Cada Git Flow tem pontos negativos e positivos, bem como desafios e vantagens. Um de seus benefícios é que somente profissionais autorizados podem analisar alterações no software e aprová-las. O uso do modelo é indicado sempre que for preciso executar um projeto de código aberto ou quando vários desenvolvedores trabalham em um único projeto.
Quer entender melhor o que é Git Flow e como surgiu? Continue lendo este artigo e saiba mais!
O que é Git Flow, como surgiu e como funciona?
Como já foi dito, o Git Flow é uma estratégia que melhora as organizações das ramificações ou Branchs dentro do repositório e confere maior fluidez aos processos de Features ou recursos e Releases ou ferramentas. Esses termos ainda são recentes e foram divulgados pelo engenheiro de software Vincent Driessen no ano de 2010.
O engenheiro holandês criou o Git Flow e explicou os seus detalhes em uma publicação como uma solução robusta para projetos que necessitam de atualizações constantes ou que ganham corpo no decorrer do tempo. O modelo também é interessante quando grande quantidade de profissionais está submetendo as últimas mudanças do código fonte dentro de um repositório.
Uma Branch Master pode ser usada como ramificação principal de um repositório, sendo que uma nova cópia precisa ser criada sempre que for preciso corrigir algo ou criar uma Feature. Após a conclusão do processo, é realizada a correção com a Master ou combinação da Branch com a Feature. O Git Flow requer uma estrutura de Branchs mais complexa.
Quais são os Branches do fluxo Git Flow?
O Git Flow trabalha com a Develop e Main, que são as Branchs principais que são permanentes. Por outro lado, utiliza branchs de suporte: Hotfix, Feature, Bugfix e Release que perduram até o Merge com as principais que são fixas e devem ser sincronizadas. Já as branchs de suporte têm o seu tempo de vida pré-definido.
Branch no Git
Branch no Git é o modelo de versionamento de códigos semelhante a uma árvore e seus galhos, ou seja, tem ramificações. A Branch Master é a principal porque faz uma ponte entre o servidor de produção e o repositório.
Main
Todo o código de produção fica nesse local. Portanto, as novas funcionalidades que estão sendo desenvolvidas serão associadas ou mescladas a Main em determinado momento.
Develop
Esse é o espaço onde se localiza o código do próximo deploy. Desse modo, as funcionalidades ou recursos são finalizados e adicionados na ramificação para a execução da etapa antes da associação a uma Main.
Feature
As branches de suporte são úteis para o desenvolvimento de funcionalidades específicas. As suas denominações iniciam por Feature e elas são criadas por meio da Branch Develop.
Release
Faz uma ponte para o Merge da Develop para a Main, visto que funciona como ambiente de homologação, que pode ser removido depois da realização do Merge com a Main e dos testes ou ainda sincronizada com a Develop.
Bugfix
É uma Branch planejada a partir da Release para efetuar correções necessárias para o sistema que ainda está sendo desenvolvido. Após a conclusão é realizado o Merge com a Branch Release.
Hotfix
Trata-se da Branch criada para executar correções de um sistema em produção por meio da Main. Ela pode ser excluída depois de ser concluída e tiver sido realizado o Merge com a Branch Main e Develop.
Como é a forma correta de executar Git Flow?
Há algumas maneiras de executar os comandos Git Flow, visto que para cada tipo de atividade há um processo ideal. Veja a seguir algumas situações que são mais comuns para entender melhor essa questão!
Versão única de um software simples
Caso um código tenha somente uma versão, como serviços web ou sites, é possível utilizar o GitHub Flow. Isso porque o time de desenvolvimento não precisa realizar tarefas complexas e após o término ou correção do bug será promovido para a versão de produção.
Várias versões em produção
Se o código tem diversas versões em produção, tais como aplicativos personalizados, produtos de software típicos, pacotes do Office ou sistemas operacionais pode ser usado o Git Flow. A razão é que o suporte deverá ser contínuo para versões anteriores.
Versão única de software complexo
Os softwares maiores, por exemplo, o Gmail e o Facebook requerem a introdução da Branch Principal entre a Branch de Deploy e a Branch Staging. As ferramentas de CI / CD poderão ser executadas antes de iniciar a produção para dar mais proteção à versão que é utilizada por milhões de usuários.
O que é feature e como está inserida nesse contexto?
As Features são recursos ou funcionalidades desenvolvidas por uma equipe de profissionais, plataformas digitais e produtos com o objetivo de entregar valor e aprimorar a experiência para os usuários. Elas são definidas conforme a estratégia e a missão da empresa, bem como das demandas dos internautas.
Aplicação prática
Um aplicativo utilizado para a troca de mensagens serve para criar grupos com diversas pessoas, conversar com os amigos e fazer videoconferências. Cada recurso ou funcionalidade dessa ferramenta é chamada de Feature.
Uso do termo Feature
A criação de uma Feature exige a aplicação de boas práticas que devem ser seguidas para que os times atendam os desejos dos usuários de um produto. Utilize o Product Discovery para descobrir qual funcionalidade precisa ser criada e para explorar novas oportunidades.
Pesquisa de mercado
Converse com os usuários do produto para compreender as suas necessidades e descobrir como resolver as dificuldades. Uma pesquisa de mercado é crucial para explorar oportunidades encontradas por outros players para resolver determinado problema e ampliar a sua visão.
Entendeu como surgiu e qual a forma correta da Git Flow? Evite gerar dúvidas com a aplicação de regras complexas. Considere os feedbacks dos usuários, faça pesquisas de NPS e descubra quais pontos precisam de melhorias. Investigue o que pode ser melhorado pela sua equipe e procure aprimorar os seus conhecimentos para criar um workflow apropriado.
Ficou com alguma dúvida ou quer dar uma sugestão? Deixe aqui o seu comentário!