git: o commit, o fluxo e a tag

55
GIT: O Commit, o Fluxo e a Tag Métodos para um bom repositório André Gumieri <[email protected]>

Upload: andre-gumieri-de-freitas

Post on 16-Feb-2017

192 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: GIT: O Commit, o Fluxo e a Tag

GIT: O Commit, o Fluxo e a TagMétodos para um bom repositório

André Gumieri <[email protected]>

Page 2: GIT: O Commit, o Fluxo e a Tag

Why, God, WHY!?

1. Bater o olho e já saber de tudo2. Entender os porquês por trás das modificações3. Rollbacks nunca foram tão fáceis4. Padrão = Pensar menos

Page 3: GIT: O Commit, o Fluxo e a Tag

$ git clone [email protected]:guminidigital/projeto-deus-me-livre.git

A vida depois do clone

Page 4: GIT: O Commit, o Fluxo e a Tag

$ git branch -a

Em qual branch devo trabalhar?

Page 5: GIT: O Commit, o Fluxo e a Tag

dev dev_20150513 dev_new joao_dev_2012 fix fix2 homolog_marco_2016* master

Page 6: GIT: O Commit, o Fluxo e a Tag

$ git log -- arquivo.js

Por que modificaram tal coisa no arquivo.js?

Page 7: GIT: O Commit, o Fluxo e a Tag

commit 7c8f92ea525af7a5d65cb2f5a4ea20ee75f1575fAuthor: Walter White <[email protected]>Date: Mon Jul 25 19:55:22 2016 -0300

Solicitações cliente

commit 87ba74f4b29cdc61a0a02e75120a0f3d50cca627Author: Jesse Pinkman <[email protected]>Date: Mon Jul 25 19:55:14 2016 -0300

QA

commit ff393e464f5e6bbef30c5674abe17af8385215f7Author: Jesse Pinkman <[email protected]>Date: Mon Jul 25 19:54:36 2016 -0300

.

commit c5e33c6dfa19df5f32d5b129d06d04df9e971041Author: Joey Tribbiani <[email protected]>Date: Mon Jul 25 19:54:28 2016 -0300

Ajustes

commit f84e7dcbbd3da416c8b19e5ddb8b05deb084b57bAuthor: Walter White <[email protected]>Date: Mon Jul 25 19:54:15 2016 -0300

Ajustes na home

Page 8: GIT: O Commit, o Fluxo e a Tag

$ git tag

Deu ruim! Pra qual versão faço rollback?

Page 9: GIT: O Commit, o Fluxo e a Tag

teste_tag prod-20120305 prod-20120305-2 tira-jquery

Page 10: GIT: O Commit, o Fluxo e a Tag

git-flowOrganizando a zona com

Page 11: GIT: O Commit, o Fluxo e a Tag

• 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

Page 12: GIT: O Commit, o Fluxo e a Tag

MASTERDEVELOPFEATURES RELEASE HOTFIX

5 TRILHAS PRINCIPAIS

Page 13: GIT: O Commit, o Fluxo e a Tag

MASTERDEVELOPFEATURES RELEASE HOTFIX

2 FIXAS

Page 14: GIT: O Commit, o Fluxo e a Tag

MASTERDEVELOPFEATURES RELEASE HOTFIX

3 DE APOIO

Page 15: GIT: O Commit, o Fluxo e a Tag

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

Page 16: GIT: O Commit, o Fluxo e a Tag

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

Page 17: GIT: O Commit, o Fluxo e a Tag

Commit bem formatadoDeixando tudo bonito com um

Page 18: GIT: O Commit, o Fluxo e a Tag

Fix #123: Altera cor do botão finalizar

Foi adicionada uma classe modificadora .finalizar dentro de .btn

Mensagem

Corpo

Page 19: GIT: O Commit, o Fluxo e a Tag

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

Page 20: GIT: O Commit, o Fluxo e a Tag

Deixar uma linha de espaço entre a mensagem e o corpo. E uma linha de espaço entre parágrafos.

Page 21: GIT: O Commit, o Fluxo e a Tag

SEPARADÃO TUDO JUNTO

Page 22: GIT: O Commit, o Fluxo e a Tag

3

Page 23: GIT: O Commit, o Fluxo e a Tag

2

Page 24: GIT: O Commit, o Fluxo e a Tag

1

Page 25: GIT: O Commit, o Fluxo e a Tag
Page 26: GIT: O Commit, o Fluxo e a Tag

Aqui é só a descrição

E aqui é o ~textão~ que vai explicartintin por tintin o que foi feito nessecommit organizadão!

Aqui tem outro parágrafo! Essa quebra delinha extra aí deixa tudo mais claro.

Aqui é só a descriçãoE aqui é o ~textão~ que vai explicartintin por tintin o que foi feito nessecommit organizadão! Aqui tem outro parágrafo! Essa quebra delinha extra aí deixa tudo mais claro.

Page 27: GIT: O Commit, o Fluxo e a Tag

Aqui é só a descrição

E aqui é o ~textão~ que vai explicartintin por tintin o que foi feito nessecommit organizadão!

Aqui tem outro parágrafo! Essa quebra delinha extra aí deixa tudo mais claro.

Aqui é só a descriçãoE aqui é o ~textão~ que vai explicartintin por tintin o que foi feito nessecommit organizadão! Aqui tem outro parágrafo! Essa quebra delinha extra aí deixa tudo mais claro.

SEPARADÃOWINS!

Page 28: GIT: O Commit, o Fluxo e a Tag

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.

Page 29: GIT: O Commit, o Fluxo e a Tag

O Que, Como e Por quê.Os melhores commits dizem

Page 30: GIT: O Commit, o Fluxo e a Tag

Por quê precisa deste commit?

O que este commit faz?

Como este commit resolve o problema?

Page 31: GIT: O Commit, o Fluxo e a Tag

Corrige falhas na home

Durante o desenvolvimento, foram encontradasfalhas graves na home:

- Menu estava desalinhado- Delay do slider estava rápido- Fonte é Futura, não helvetica

O que?

Por quê?

$ git show 9d32dac08c47f52a2b15a2b4298865448efe5bcfdiff --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?

Page 32: GIT: O Commit, o Fluxo e a Tag

Fix #123: Altera cor do botão finalizar

Foi adicionada uma classe modificadora .finalizar dentro de .btn

O que?Por quê?

Como?

Page 33: GIT: O Commit, o Fluxo e a Tag

$ git show 9d32dac08c47f52a2b15a2b4298865448efe5bcfdiff --git a/quem-somos.html b/quem-somos.htmlnew 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

Page 34: GIT: O Commit, o Fluxo e a Tag

Pensar a mensagem do commité o novo pensar no nome da variável

Page 35: GIT: O Commit, o Fluxo e a Tag

Deixa eu escrever do meu jeito. Não me enche o saco.

Padrão = Pensar menos.

Page 36: GIT: O Commit, o Fluxo e a Tag

Precisa ser curto, mas tem que falar tudo.

A mensagem deve ser imperativa. O commit fala o que fazer quando for aplicado.

Page 37: GIT: O Commit, o Fluxo e a Tag

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

Page 38: GIT: O Commit, o Fluxo e a Tag

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"

Page 39: GIT: O Commit, o Fluxo e a Tag

Commits em inglês, “pode to be”?

if (openSource || clienteGringo || padraoDoRepo==‘en’) {

lang = ‘en-US’;

} else {

lang = ‘pt-BR’;

}

Page 40: GIT: O Commit, o Fluxo e a Tag

Tags e versõesMarcando seu lugar no espaço tempo com

Page 41: GIT: O Commit, o Fluxo e a Tag

• 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…

Page 42: GIT: O Commit, o Fluxo e a Tag

4 2 5. .

Page 43: GIT: O Commit, o Fluxo e a Tag

4MAJOR MINOR PATCH

2 5. .

Page 44: GIT: O Commit, o Fluxo e a Tag

4MAJOR MINOR PATCH

2 5. .Mudanças que nãomantém compatibilidade

com a versão anteriorRelease de pacote de features em produção

Correções do softwarejá em produção

Page 45: GIT: O Commit, o Fluxo e a Tag

2 5.E se eu quiser fazer tag de homologação?

-rc1Conheça o release candidate

Page 46: GIT: O Commit, o Fluxo e a Tag

$ 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

Page 47: GIT: O Commit, o Fluxo e a Tag

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

Page 48: GIT: O Commit, o Fluxo e a Tag

$ git clone [email protected]:guminidigital/projeto-vem-ni-mim.git

A nova vida depois do clone

Page 49: GIT: O Commit, o Fluxo e a Tag

$ git branch -a

Em qual branch devo trabalhar?

Page 50: GIT: O Commit, o Fluxo e a Tag

develop release/1.1.0 hotfix/1.0.1 feature/facelift-menu* master

Page 51: GIT: O Commit, o Fluxo e a Tag

$ git log -- arquivo.js

Por que modificaram tal coisa no arquivo.js?

Page 52: GIT: O Commit, o Fluxo e a Tag

commit 7c8f92ea525af7a5d65cb2f5a4ea20ee75f1575fAuthor: Walter White <[email protected]>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 87ba74f4b29cdc61a0a02e75120a0f3d50cca627Author: Jesse Pinkman <[email protected]>Date: Mon Jul 25 19:55:14 2016 -0300

Fix #123: Cor de tal coisa em vermelho

commit ff393e464f5e6bbef30c5674abe17af8385215f7Author: Jesse Pinkman <[email protected]>Date: Mon Jul 25 19:54:36 2016 -0300

Adiciona tal coisa

Page 53: GIT: O Commit, o Fluxo e a Tag

$ git tag

Deu ruim! Pra qual versão faço rollback?

Page 54: GIT: O Commit, o Fluxo e a Tag

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

Page 55: GIT: O Commit, o Fluxo e a Tag