Introdução

O Git flow é uma proposta de fluxo de trabalho com o git para simplificar a gestao de branches, merges e conflitos.

Preparação inicial

Basicamente se dá com a clone do repositório, e a utilização inicial da branch master, a partir da qual se originará as demais branches.

Nomenclatura de branches

Ao iniciar desenvolvimento da atividade é importante identificar o tipo da mesma, pois isso influenciará na nomenclatura.

  1. DEVE-SE usar feature/<nome-da-funcionalidade>, para qualquer nova funcionalidade que esteja sendo incluída no projeto. A branch será mantida até ser aprovada no PR e consequentemente mergeada na master.
  2. DEVE-SE usar hotfix/<nome-do-fix>, para qualquer nova melhoria ou correção, a branch será mantida até ser aprovada no PR e consequentemente mergeada na master.
  3. PODE-SE usar release/<nome-da-release>, para agrupar um conjunto de features e hotfixes que simplifique uma entrega. A branch será mantida até ser aprovada no PR e consequentemente mergeada na master.

Coding flow

O objetivo do coding flow é criar uma proposta de fluxo de trabalho, que permita iterações assíncronas durante o processo de desenvolvimento, revisão e validação do que está sendo desenvolvido.

  1. Checkout da branch
    1. Verificar se há atualizações da master para realizar $ git rebasese necessário.
  2. Implementação/codificação/ajustes
  3. Realizar $ git commit. O objetivo é simplificar a comparação das modificações possibilitando rapida reversão caso seja necessário.
  4. Realizar os testes unitários,
    1. Caso o mesmo não seja aprovado voltar ao passo 1.
  5. Fazer o push da branch para o server remoto
  6. Atualizar Pull Request para a branch
    1. Caso não exista, criar Pull Request
  7. Acompanhar a verificação de qualidade
    1. Se a branch é mergeável
    2. Se não está quebrando o lint
    3. Se os testes estao passando
    4. Se foi aprovado no SonarQube
  8. Pull Request será finalizada, realizando o merge na branch alvo.