Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

GIT: O Commit, o Fluxo e a Tag

332 views

Published on

Métodos para um bom repositório. GitFlow, formatando e pensando bons commits e versionamento semântico com semver

Published in: Technology
  • Be the first to comment

GIT: O Commit, o Fluxo e a Tag

  1. 1. GIT: O Commit, o Fluxo e a Tag Métodos para um bom repositório André Gumieri <andre.gumieri@gumini.com.br>
  2. 2. Why, God, WHY!? 1. Bater o olho e já saber de tudo 2. Entender os porquês por trás das modificações 3. Rollbacks nunca foram tão fáceis 4. Padrão = Pensar menos
  3. 3. $ git clone git@github.com:guminidigital/projeto-deus-me-livre.git A vida depois do clone
  4. 4. $ git branch -a Em qual branch devo trabalhar?
  5. 5. dev dev_20150513 dev_new joao_dev_2012 fix fix2 homolog_marco_2016 * master
  6. 6. $ git log -- arquivo.js Por que modificaram tal coisa no arquivo.js?
  7. 7. commit 7c8f92ea525af7a5d65cb2f5a4ea20ee75f1575f Author: Walter White <wwhite@gmail.com> Date: Mon Jul 25 19:55:22 2016 -0300 Solicitações cliente commit 87ba74f4b29cdc61a0a02e75120a0f3d50cca627 Author: Jesse Pinkman <yo_bitch@outlook.com> Date: Mon Jul 25 19:55:14 2016 -0300 QA commit ff393e464f5e6bbef30c5674abe17af8385215f7 Author: Jesse Pinkman <yo_bitch@outlook.com> Date: Mon Jul 25 19:54:36 2016 -0300 . commit c5e33c6dfa19df5f32d5b129d06d04df9e971041 Author: Joey Tribbiani <jtribbiani@yahoo.com> Date: Mon Jul 25 19:54:28 2016 -0300 Ajustes commit f84e7dcbbd3da416c8b19e5ddb8b05deb084b57b Author: Walter White <wwhite@gmail.com> Date: Mon Jul 25 19:54:15 2016 -0300 Ajustes na home
  8. 8. $ git tag Deu ruim! Pra qual versão faço rollback?
  9. 9. teste_tag prod-20120305 prod-20120305-2 tira-jquery
  10. 10. git-flow Organizando a zona com
  11. 11. • Organiza o ciclo de vida do projeto no GIT • Fica fácil de identificar a situação do repositório • Tem bastante material on-line • Todo mundo usa, recuse imitações
  12. 12. MASTERDEVELOPFEATURES RELEASE HOTFIX 5 TRILHAS PRINCIPAIS
  13. 13. MASTERDEVELOPFEATURES RELEASE HOTFIX 2 FIXAS
  14. 14. MASTERDEVELOPFEATURES RELEASE HOTFIX 3 DE APOIO
  15. 15. MASTERDEVELOPFEATURES RELEASE HOTFIX - Máquina do DEV - Pequenos recursos - Nasce de develop - Trilha principal - Sempre a frente 
 da master - Aqui não se faz commit - Trilha pré-produção - QA - Ambiente de homolog - Trilha de produção - Aqui não se faz commit - Ambiente de produção - Sempre com TAG 
 de versão - Ajustes da versão em
 produção - Nasce da master
  16. 16. MASTERDEVELOPFEATURES RELEASE HOTFIX create branch merge nas trilhas fixas merge de atualização LEGENDA 1.0.0 1.0.1 1.0.0-rc1 1.0.0-rc2 1.1.0-rc1 1.1.0 1.1.0-rc2 release/1.0.0 release/1.1.0 hotfix
  17. 17. Commit bem formatado Deixando tudo bonito com um
  18. 18. Fix #123: Altera cor do botão finalizar Foi adicionada uma classe modificadora .finalizar dentro de .btn Mensagem Corpo
  19. 19. corrige cor dos links. remove cores do sass Texto começa com letra maíuscula. Commits também. Corrige cor dos links. Remove cores do SASS
  20. 20. Deixar uma linha de espaço entre a mensagem e o corpo. E uma linha de espaço entre parágrafos.
  21. 21. SEPARADÃO TUDO JUNTO
  22. 22. 3
  23. 23. 2
  24. 24. 1
  25. 25. Aqui é só a descrição E aqui é o ~textão~ que vai explicar tintin por tintin o que foi feito nesse commit organizadão! Aqui tem outro parágrafo! Essa quebra de linha extra aí deixa tudo mais claro. Aqui é só a descrição E aqui é o ~textão~ que vai explicar tintin por tintin o que foi feito nesse commit organizadão! Aqui tem outro parágrafo! Essa quebra de linha extra aí deixa tudo mais claro.
  26. 26. Aqui é só a descrição E aqui é o ~textão~ que vai explicar tintin por tintin o que foi feito nesse commit organizadão! Aqui tem outro parágrafo! Essa quebra de linha extra aí deixa tudo mais claro. Aqui é só a descrição E aqui é o ~textão~ que vai explicar tintin por tintin o que foi feito nesse commit organizadão! Aqui tem outro parágrafo! Essa quebra de linha extra aí deixa tudo mais claro. SEPARADÃO WINS!
  27. 27. O motivo dessa regra pode até parecer frescura de alguém cagando regra, mas a real é que ninguém gosta de ler texto com umas puta linhas longas Mensagem e corpo devem ser curtos. ~70 caracteres é um bom tamanho. Passou disso, quebra a linha.
  28. 28. O Que, Como e Por quê. Os melhores commits dizem
  29. 29. Por quê precisa deste commit? O que este commit faz? Como este commit resolve o problema?
  30. 30. Corrige falhas na home Durante o desenvolvimento, foram encontradas falhas graves na home: - Menu estava desalinhado - Delay do slider estava rápido - Fonte é Futura, não helvetica O que? Por quê? $ git show 9d32dac08c47f52a2b15a2b4298865448efe5bcf 
 diff --git a/menu.less b/menu.less @@ -129,6 +129,18 @@ .menu{ - top: 13px; + top: 17px; } diff --git a/slider.js b/slider.js @@ -129,6 +129,18 @@ var confSlider = { - delay: 500; + delay: 5000; } diff --git a/base.less b/base.less @@ -129,6 +129,18 @@ body { - font-family: Sans-serif; + font-family: @font-futura; } Como?
  31. 31. Fix #123: Altera cor do botão finalizar Foi adicionada uma classe modificadora .finalizar dentro de .btn O que?Por quê? Como?
  32. 32. $ git show 9d32dac08c47f52a2b15a2b4298865448efe5bcf 
 diff --git a/quem-somos.html b/quem-somos.html new file mode 100644
 index 0000000..e9bc1b6 --- /dev/null +++ b/quem-somos.html @@ -0,0 +1,10 @@ + <!DOCTYPE html> + <html> + <head>
 + <title>Quem Somos</title> + </head> + <body> ... + </body> + </html> Por quê? Adiciona página quem somos O que? Como? Implicito. É claro o motivo de estar adicionando uma nova página
  33. 33. Pensar a mensagem do commit é o novo pensar no nome da variável
  34. 34. Deixa eu escrever do meu jeito. Não me enche o saco. Padrão = Pensar menos.
  35. 35. Precisa ser curto, mas tem que falar tudo. A mensagem deve ser imperativa. O commit fala o que fazer quando for aplicado.
  36. 36. A mensagem de commit deve completar a frase Quando aplicado, este commit… ... Muda cor dos links ... Torna dinâmica a página de quem somos ... Resolve #123: Quebra de layout nos serviços ... Adiciona página de contato ... Altera a URL de Serviços ... Atualiza o banco de dados ... Corrige tamanho do box de contato
  37. 37. Parece bizarro. Mas o GIT mesmo faz isso: If applied, this commit will… ... Merge branch ‘staging’ into develop ... Revert "Add the thing with the stuff"
  38. 38. Commits em inglês, “pode to be”? if (openSource || clienteGringo || padraoDoRepo==‘en’) { lang = ‘en-US’; } else { lang = ‘pt-BR’; }
  39. 39. Tags e versões Marcando seu lugar no espaço tempo com
  40. 40. • Momentos do repositório. Release, por exemplo. • Padrão semântico: semver.org • Amplamente utilizado ~nas web~ • O favorito do NPM, Bower, GEM, PIP, Composer…
  41. 41. 4 2 5. .
  42. 42. 4 MAJOR MINOR PATCH 2 5. .
  43. 43. 4 MAJOR MINOR PATCH 2 5. .Mudanças que não mantém compatibilidade com a versão anterior Release de pacote de features em produção Correções do software já em produção
  44. 44. 2 5. E se eu quiser fazer tag de homologação? -rc1 Conheça o release candidate
  45. 45. $ git push origin 1.0.0-rc1 $ git tag 1.0.0-rc1 Tag no último commit $ git tag 1.0.0-rc1 f84e7dcbbd3da416c8b19e5ddb8b05deb084b57b Tag em um commit específico Assim como branchs, tags são locais
  46. 46. 1.1.0-rc1 A tag não se relaciona com o branch, apenas com o commit. 1.0.0 1.0.1 branch-a branch-b branch-c
  47. 47. $ git clone git@github.com:guminidigital/projeto-vem-ni-mim.git A nova vida depois do clone
  48. 48. $ git branch -a Em qual branch devo trabalhar?
  49. 49. develop release/1.1.0 hotfix/1.0.1 feature/facelift-menu * master
  50. 50. $ git log -- arquivo.js Por que modificaram tal coisa no arquivo.js?
  51. 51. commit 7c8f92ea525af7a5d65cb2f5a4ea20ee75f1575f Author: Walter White <wwhite@gmail.com> Date: Mon Jul 25 19:55:22 2016 -0300 Modifica tal coisa que quebrava negócio Quando negócio se comportava de tal forma, tal coisa gerava incompatibilidade e fazia negócio quebrar. Tal coisa foi substituido por treco para solucionar o problema. commit 87ba74f4b29cdc61a0a02e75120a0f3d50cca627 Author: Jesse Pinkman <yo_bitch@outlook.com> Date: Mon Jul 25 19:55:14 2016 -0300 Fix #123: Cor de tal coisa em vermelho commit ff393e464f5e6bbef30c5674abe17af8385215f7 Author: Jesse Pinkman <yo_bitch@outlook.com> Date: Mon Jul 25 19:54:36 2016 -0300 Adiciona tal coisa
  52. 52. $ git tag Deu ruim! Pra qual versão faço rollback?
  53. 53. 1.0.0-rc1 1.0.0-rc2 1.0.0 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.1.3

×