GIT FLOW

Leonardo Vitali

Anderson Vinicius

Sistema de controle de versão

  • Controle de histórico 
  • Trabalho em equipe
  • Marcação e resgate de versões estáveis
  • Ramificação do projeto

GIT É CRIADO EM 2005

Linus Torvalds

Em 2002, o projeto do kernel do Linux começou a usar um sistema DVCS (Distributed version control) proprietário chamado BitKeeper.

Em 2005, o relacionamento entre a comunidade que desenvolvia o kernel e a empresa que desenvolvia comercialmente o BitKeeper se desfez, e o status de isento-de-pagamento da ferramenta foi revogado.

Isso levou a comunidade de desenvolvedores do Linux (em particular Linus Torvalds, o criador do Linux) a desenvolver sua própria ferramenta baseada nas lições que eles aprenderam ao usar o BitKeeper. Alguns dos objetivos do novo sistema eram:

  • Velocidade
  • Design simples
  • Suporte robusto a desenvolvimento não linear (milhares de branches paralelos)
  • Totalmente distribuído
  • Capaz de lidar eficientemente com grandes projetos como o kernel do Linux (velocidade e volume de dados) 

O que é o git flow?

  • É uma coleção de extensões para o git baseadas no modelo de branching de Vincent Driessen.
  • Facilmente instalado no Mac, Linux ou Windows.
  • Abstração para organização do repositório git.
  • Semântica aos branches Master e Develop.
  • Permite o trabalho com:
    • FEATURES
    • RELEASES
    • HOTFIXES
    • BUGFIXES

Vincent Driessen

Master e Develop são repositórios centrais no git flow. Nunca são apagados, e o branch Master sempre recebe merge do Develop ou seja nunca commits diretamente.

 

O Develop é onde preparamos a aplicação para ir para o master.

 

 

Semântica

Fluxos descentralizados

- FEATURES

- RELEASES

- HOTFIXES

- BUGFIXES

 

São branches que possuem tempo de vida curta, ou seja são criados e depois removidos pois não tem necessidade de mantê-los.

 

Features, Releases e Bugfixes sempre são criadas a partir de Develop.

 

Já os Hotfixes são atrelados diretamente a uma Release ou seja ele é criado a partir do branch Master.

Iniciando um repositório com git flow

FEATURES

  • Define uma nova funcionalidade
  • Múltiplas features podem existir ao mesmo tempo
  • Toda Feature inicia e finaliza na branch Develop

Ciclo de vida de uma Feature

Compartilhando uma Feature

Fazendo pull da feature compartilhada

RELEASES

  • Define uma nova versão de produção do software.
  • Inicia em Develop.
  • Será mesclado em Master e também em Develop.
  • Uso do semantic version para determinar a versão.
  • Erros podem ser corrigidos por Hotfix.

http://semver.org/

Semantic version: MAJOR.MINOR.PATCH

Criando uma release

Finalizando uma release

Enviando release para o remote

HOTFIX

  • Correção urgente do código que está em produção.
  • Inicia na branch de Release(Master).
  • Será mesclado em Master e também em Develop.
  • Cria tags automaticamente.
  • O Hotfix deve ter o nome ou numero de versão da nova release.

Iniciando Hotfix

Compartilhando um Hotfix

Realizando pull de um Hotfix compartilhado

Finalizando um Hotfix

Publicando Hotfix (Nova Realease)

BUGFIX

  • Correção do código que ainda não está em produção mas já foi submetido ao repositório.
  • Inicia e termina na branch de Develop.

Criando Bugfix

Finalizando Bugfix

Marotagens

Pequenas coisas que podem ajudar no workflow com git.

Inicializar o repositório

Se executado git flow init -d os branches criados possuirão nomes e prefixos padrão do git flow.

--showcommands

Exibe cada comando git executado pelo gitflow

Ação delete

Todos os comandos que geram um branch possuem o comando delete que é executado localmente.

Hotfix com push automático

Usando o comando git flow hotifx finish -p além de realizar o merge automáticamente o git flow se encarrega do push para master e também das tags da release.

Repositórios

Git Flow - https://github.com/nvie/gitflow (Original)

Git Flow AVH - https://github.com/petervanderdoes/gitflow-avh (Versão com mais funcionalidades)

 

Git Flow

By Anderson Vinicius

Git Flow

Nivelando a equipe :)

  • 592