Neste artigo apresento uma proposta para um fluxo de trabalho simples usando a ferramenta de gestão de versão de código fonte padrão do mercado, um Git workflow.
Para uma gestão eficiente de um projeto de desenvolvimento de software, além do uso elementar de uma ferramenta de versionamento, é importante definir uma padronização de organização para a equipe.
Git workflow simples
A imagem a seguir apresenta um diagrama que resume o trabalho regular, de forma simplificada, em um projeto de desenvolvimento com versionamento de código usando Git:
A sequência a seguir descreve o passo a passo para este fluxo de trabalho, considerando um caminho sem a ocorrência exceções no andamento do desenvolvimento de um projeto de software:
- Criação do repositório
git init
- Commit inicial no branch
master
git add .
git commit -m 'Initial commit'
- Proteger o branch
master
para que não seja possível fazer push direto nele. - Criação do branch
dev
para ser utilizado pelo desenvolvimento
git checkout -b dev
- Realizar os commits no branch
dev
git add .
git commit -m 'Minha nova funcionalidade'
# push para o repositório central sempre que necessário
git push origin dev
- Ao chegar em um momento de realizar testes para publicação da aplicação em produção, criar o branch
test
:- Caso o branch ainda não exista, crie o mesmo a partir de
dev
:
- Caso o branch ainda não exista, crie o mesmo a partir de
git checkout -b test
- Fazer o merge de
dev
em test, enviar para o repositório central e realizar o deploy no servidor de testes
git checkout test
git merge dev
git push origin test
- Se todos os testes passarem, fazer o merge de
test
emmaster
, criar tag de versão, então publicar em produção
git checkout master
git merge test
git tag 'v.0.1.0'
git push origin master
git push --tags
- Continuar o desenvolvimento em
dev
git checkout dev
- Novo ponto de estabilidade para publicação em produção, novamente fazer o merge de
dev
emtest
git checkout test
git merge dev
Caso algum erro/falha seja encontrado no teste, corrigir em
dev
Após correções, novo merge de
dev
emtest
- comandos anterioresApós todos os testes serem aceitos, merge de
test
emmaster
, tag de versão, publicar em produção - comandos de publicação em produção e master explicados acimaContinuar o fluxo de trabalho descrito
Desta maneira, consideramos que a versão em produção será sempre igual à última tag do branch master. A última versão no ambiente de testes será sempre a última entrada (HEAD) no ramo test.
Enquanto o desenvolvimento continua trabalhando no branch dev com as novas funcionalidades a serem implementadas.
Git fluxo de trabalho simples e correções de erro
Note que ainda é possível criar ramificações a partir do master caso algum erro seja identificado na versão de produção, enquanto o desenvolvimento de novas funcionalidades avançou, o diagrama a seguir exemplifica este contexto:
Portanto, quando um bugfix é necessário na versão que está rodando em produção:
- Inicia-se um novo branch para a correção do bug, neste exemplo o branch é chamado de
bugfix-0.1.0
- Este novo branch deve ser iniciado a partir do
master
pois o branchdev
já está com alterações que ainda não foram testadas
git checkout master
git checkout -b bugfix-0.1.0
- Faz-se os commits necessários para a correção/alteração na branch
bugfix-0.1.0
- Testa-se, podendo ou não enviar ao branch
test
, neste exemplo consideramos um teste direto do bugfix - Faz-se o merge de
bugfix
paramaster
, e também paradev
, com o objetivo de não perder a correção nas versões futuras que estão em desenvolvimento
git add .
git commit -m 'Correções implementadas'
# testes realizados
git checkout master
git merge bugfix-0.1.0
git push origin master
git checkout dev
git merge bugfix-0.1.0
git push origin dev
- Neste ponto é possível excluir o ramo de bugfix se desejado, pois as alterações terão sido incorporadas no branch dev
Considerações finais
Este é um workflow muito simples, porém que atende a projetos com equipes pequenas ou projetos onde o desenvolvimento de funcionalidades e entregas ocorre de forma “linear” ou sequencial.
Eu diria que funciona bem, principalmente, para desenvolvedores solo.
Comentários