git-flow

Git Flow: a estratégia essencial para organizar as versões de um código

quinta-feira, 30 de julho de 2020 | Comentários

Escrito por

O Git Flow é um modelo, uma estratégia ou, ainda, um workflow muito utilizado pelas equipes de desenvolvimento. Ele se destaca por auxiliar na organização do versionamento de um código.

Ele deixa mais organizado e seguro todo o processo de criação de novas Features e Hotfixes dentro do código, evitando perder alguma informação importante.

Neste artigo, explicaremos tudo sobre Git Flow e mostraremos um fluxo básico em que ele atua. Boa leitura!

O que é Git Flow e quando ele surgiu?

O Git Flow é uma estratégia criada para melhorar as organizações das Branchs (ramificações) dentro do repositório e, desta forma, dar mais fluidez ao processo de novas Features e Releases.

O termo ainda é bem recente. Ele foi divulgado através de uma publicação do engenheiro de software holandês Vincent Driessen, em 2010.

Foi nessa publicação que ele explicou em detalhes qual foi a sua ideia ao criar esse modelo para utilização das Branchs.

Não confunda Git Flow com Git

O Git é um modelo de versionamento de códigos onde a Branch é algo como uma ramificação, ou seja, é possível enxergar esse modelo um pouco parecido como uma árvore e seus galhos.

Se você já utilizou o Git sabe muito bem que a Branch chamada de Master é considerada a principal. É ela que geralmente faz a ponte entre o repositório e o servidor de produção.

O Git Flow trouxe uma solução mais robusta, justamente para aqueles projetos que vão ganhando corpo ou que precisam sofrer novas atualizações constantemente. Ou ainda, também, quando existe uma grande quantidade de pessoas “commitando” dentro de um repositório.

O termo “commitar” está relacionado a fazer um commit, que significa submeter as últimas alterações do código fonte ao repositório, fazendo com que elas se tornem parte da versão principal.

Com o texto explicado, agora imagine um projeto que envolva 40 programadores. É difícil visualizar a maneira com que o tratamento de todo mundo ficaria depois de terem “commitado” na Master.

Certamente o trabalho para ajustar e recuperar dados originais seria muito mais demorado e árduo. Fora a bagunça que isso iria gerar.

Até existem empresas que fazem isso, porém elas adotam outras estratégias para não cair na armadilha de colocar algo em produção que não esteja totalmente testado.

Como é a forma correta então?

Numa abordagem mais genérica, é comum utilizar a Branch Master como a ramificação principal do repositório. Desta forma, toda vez que é necessário criar uma nova Feature ou corrigir algo, uma nova Branch é criada para cada caso.

Depois de concluído, é feito um Merge, ou seja, a combinação da Branch de Feature ou a correção com a Master.

No Git Flow, algo parecido acontece, porém com uma estrutura de Branchs um pouco mais complexa, mas que também ajuda muito.

Qual o fluxo padrão de um Git Flow?

Podemos separar o Git Flow em dois tipos de Branch:

  1. Principais: São as Branch Máster e uma outra chamada Develop;
  2. Suporte: São as conhecidas como Feature, Release e Hotfix.

Para cada Branch, existem algumas regrinhas específicas para manter a organização.

A Branch Master continua sendo utilizada para enviar os Commits dos Releases para a produção. É a partir dela que é criada a Branch Develop, que contará com todas as Features estáveis que passarão pelo processo Merge posteriormente para uma Branch de Release.

Isso significa que para cada nova Feature, uma nova Branch é criada.

É importante destacar que a nomenclatura utilizada no Git Flow e em outros Flows é padronizada para facilitar o entendimento e agilizar o trabalho de todos.

Mas voltando, uma Branch Feature será criada sempre a partir da Develop e voltará via Merge também para a Develop, o que significa que, depois, poderá ser removida.

Imagine que você vai criar uma nova Feature que é o formulário novo de contato de um site, por exemplo. Você deve nomear a Branch como algo parecido com: “feature/new-contact-page”.

Uma vez que se tem uma nova Feature incorporada na Develop, é preciso prepará-la para entrar em produção, o que não pode ser feito levando-a apenas para a Master. É preciso utilizar uma outra Branch de suporte, chamada Release.

Pode ser que apenas após a criação de um conjunto de novas Features que você tenha um Release pronto. Porém, uma vez que essas Features estejam prontas na Develop, será possível uní-las em um Branch Release.

Com o Release pronto para ir para a Master, será o momento de criar uma tag, ou seja, uma indicação, onde conterá uma nova versão do seu projeto. Isso é feito na Branch Master, logo após o Merge.

Em cada Merge realizada na Master, é preciso fazê-la também na Branch Develop, para refletir em um novo Release tageado e, aí sim a Branch desse Release poderá ser removida.

Esse é um fluxo padrão de um Git Flow, porém ninguém está livre de bugs ou problemas inesperados ao longo da produção. É aí que surge outra Branch de suporte, a chamada Hotfix.

Ela funciona como uma Branch Release, com a diferença de que, nesse caso, é utilizada para uma ação mais crítica.

Por isso, quando uma Hotfix é finalizada, ela vai ser “Mergeada” diretamente na Master. Ela também recebe uma tag na Master após esse processo e deve ser feito o mesmo na Branch Develop.

Desta forma, é possível manter os desenvolvedores trabalhando em suas Features, enquanto as Hotfix são criadas.

Aí sim as Branchs com Hotfix podem ser removidas.

Outras abordagens de gestão de Branchs

Existem outras abordagens, além do Git Flow, que realizam a gestão das Branchs em um projeto. Um exemplo, criada pelo GitHub em 2011, é chamada de GitHub Flow. Ele funciona bem em muitos casos, especialmente aqueles menos complexos.

Além disso, para não ficar para trás, o pessoal do GitLab também criou o GitLabFlow, em 2014. Outro nome conhecido é o One Flow.

O Git também conta com uma extensão criada para agilizar o processo todo e, assim, passar um monte de comandos que deveriam ser realizados. A extensão se chama git-flow – o que, percebe-se, pode gerar confusão com o Git Flow que estamos abordando neste conteúdo. Então fique ligado!

E aí, conseguiu entender um pouco mais sobre esse assunto? Para se aprofundar ainda mais, recomendamos que você assista o vídeo que o pessoal do Código Fonte TV publicou sobre Git Flow!


Tags:, ,
Comentários
Pressione Enter para pesquisar ou ESC para fechar