O documento discute métodos para organizar um repositório Git, incluindo commits bem formatados, uso de branches e tags semânticas de acordo com a especificação SemVer, e a abordagem git-flow para gerenciar o ciclo de vida do projeto.
1. GIT: O Commit, o Fluxo e a Tag
Métodos para um bom repositório
André Gumieri <andre.gumieri@gumini.com.br>
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. $ git clone git@github.com:guminidigital/projeto-deus-me-livre.git
A vida depois do clone
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
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. 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
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.
27. 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!
28. 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.
29. O Que, Como e Por quê.
Os melhores commits dizem
30. Por quê precisa deste commit?
O que este commit faz?
Como este commit resolve o problema?
31. 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?
32. Fix #123: Altera cor do botão finalizar
Foi adicionada uma classe modificadora
.finalizar dentro de .btn
O que?Por quê?
Como?
33. $ 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
35. Deixa eu escrever do meu jeito.
Não me enche o saco.
Padrão = Pensar menos.
36. Precisa ser curto, mas tem que falar tudo.
A mensagem deve ser imperativa.
O commit fala o que fazer quando for aplicado.
37. 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
38. 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"
39. Commits em inglês, “pode to be”?
if (openSource || clienteGringo || padraoDoRepo==‘en’) {
lang = ‘en-US’;
} else {
lang = ‘pt-BR’;
}
44. 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
45. 2 5.
E se eu quiser fazer tag de homologação?
-rc1
Conheça o release candidate
46. $ 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
47. 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
48. $ git clone git@github.com:guminidigital/projeto-vem-ni-mim.git
A nova vida depois do clone
51. $ git log -- arquivo.js
Por que modificaram tal coisa no arquivo.js?
52. 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