Estratégia Git da GeoMK
- Atualmente, usamos o Gitflow. Quaisquer recursos ou implementações, mesmo que um projeto sendo iniciado, devem ser implementados em ramificações da branch (ramo) develop. Essas são as features e são nomeadas como feature/ (ou um prefixo semântico apropriado para commits que tecnicamente não constituem um 'recurso' verdadeiro, ex. 'Refatoração/[descrição-da-refatoração]' etc ...). Todas as correções e atualizações para produção devem ser aplicados diretamente no Master e no Develop através de uma branch prefixada com release/, para novas versões da produção ou hotfix/ para correções de emegência em produção. Todas as branches devem estar associadas a uma solicitação de pull para mesclar nas ramificações Develop ou Master. Para commit não triviais (ou no geral) devem ser solicitados através de um pull request.
Fluxo para clonar um projeto
- Deve-se criar uma pasta segundo a lei de formação: /workspace/[cliente geomk]/[codigo-projecto]/[seu username]/
ex: (mkdir /workspace/SebraeCE/djn00a/bispo/)
- Será necessário também, mudar a permissão de /workspace/[cliente geomk]/[codigo-projecto] para que outros programadores possam criar seus pastas e trabalhar neste projeto.
ex: (chmod -R 777 /workspace/SebraeCE/djn00a/)
- Entre dentro da pasta.
ex: (cd /workspace/SebraeCE/djn00a/bispo/)
- Puxe o código do repositório. Quando for copiar a url do projeto, e importante copiar como ssh e não como https
ex: (git clone git@git.geomk.com.br:Sebrae/djn00a.git .)
Este é um exemplo/resumo dos comandos a serem executados:
mkdir /workspace/SebraeCE/djn00a/bispo/
cd /workspace/SebraeCE/djn00a/bispo/
git clone git@git.geomk.com.br:Sebrae/djn00a.git .
Habilite o flow do git (git flow init
):
git flow init
Saida do comando
Which branch should be used for bringing forth production releases?
Branch name for production releases: [master] <enter>
Branch name for "next release" development: [develop] <enter>
How to name your supporting branch prefixes?
Feature branches? [feature/] <enter>
Release branches? [release/] <enter>
Hotfix branches? [hotfix/] <enter>
Support branches? [support/] <enter>
Version tag prefix? [] v <enter>
Fluxo de trabalho para nova branch de recurso (feature)
- Puxe mudanças recentes
git pull orgin develop
- Crie uma nova branch para o recurso
bash git flow feature start -F <nome-da-feature>
- Faça as modificações necessárias no codigo fonte
- Adicione das modificações feitas
git add .
- Comite o que for modificado usando a lei de formação:
git commit -m(TG- #in-progress)
git commit -m "iniciado o desenvolvimento do recurso xyz (TG-8 #in-progress)"
- Publique a sua branch para o gitlab da GeoMK
git flow feature publish <nome-da-feature>
- Finalizar a sua Feature para o gitlab da GeoMK
git flow feature finish <nome-da-feature> -F -p -D
1
Atualização da base de uma feature (Rebasing)
Se outros contribuidores confirmarem alterações no develop
enquanto uma branch de recurso estiver em desenvolvimento, um Rebase será necessário para uma mesclagem de projeto limpa. Para uma descrição de rebasing, consulte os docs. Para obter uma descrição de consolidação versus fusão antiga simples, consulte este post do blog. Em suma, o rebasing garante que suas alterações sejam aplicadas sobre as mudanças mescladas em develop
por outras branch's de features concluídas desde que a branch da feature em questão foi dividida. Ele isola a resolução de conflito para as branchs de feature
e mantém os commits de resolução de conflito de mesclagem de poluir o histórico da branch develop
principal.
Para fazer um rebase, após o seu último commit em feature/<nome-da-feature>
por favor siga o seguinte processo:
- Rebase da feature
git flow feature rebase <nome-da-feature>
Isso vai atualizar a feature com a develop.
Fluxo de trabalho para hotfix aplicado diretamente ao Master
Sempre que for necessário uma correção no sistema que está em produção deve-se fazer esssa atualização por meio de um hotfix
. Na GeoMK utilizamos o versionamento semântico 2.0.0 o que implica que o hotfix sempre deve incrementar a versão de Correção (PATCH)
+ Iniciar o hotfix
git flow hotfix start <version> [<base>]
- Deve-se alterar o arquivo do
changelog.md
informando qual correção se refere o patch e o arquivoDockerfile
atualizando a o environment da versão, exemplo:ENV VERSION v1.0.2
- Confime a alteração passando o número referente ao ISSUES da correção indicando para o TAIGA da GeoMK que o statu é "IN PROGRESS"
git add .
git commit -m "iniciado a correção do recurso xyz (TG-12 #in-progress)"
- Postar para o git da GeoMK. Envie para o git da GeoMK finalizando o hotfix
git push origin hotfix/1.0.2