controle de versão com git e como otimizar seu workflow com git flow

54
Controle de Versão com Git e como Otimizar seu Workflow com git flow Lucas Mezêncio | Dev In Company 18-07-2015

Upload: lucas-mezencio

Post on 15-Aug-2015

206 views

Category:

Software


5 download

TRANSCRIPT

Page 1: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Controle de Versão com Git e como Otimizar seu Workflow com git flow

Lucas Mezêncio | Dev In Company 18-07-2015

Page 2: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

whoami ■ Desenvolvedor Web desde 2007

■ PHP, JavaScript, ShellScript e Python

■ Certified Scrum Master

■ Organizador do PHP-MG

Page 3: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Git ■ O que é Git

■ git flow

■ Dicas

Page 4: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

O que é Git

“cabeça dura, pessoas que acham que sempre tem razão, argumentativas”

Page 5: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

O que é o Git

“Git é um sistema de controle de versão distribuído e um sistema de gerenciamento de código fonte, com

ênfase em velocidade”

http://en.wikipedia.org/wiki/Git_(software)

Page 6: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

O que é o Git

“It's a stupid content tracker. It tracks files and folders.I really really designed it coming at the problem from

viewpoint of a file system person, I actually have absolutely zero interest in creating a traditional SCM

system.”

TORVALDS, Linus

Page 7: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Porque o Git é bom?

■ Branching local simples

■ Tudo é local

■ Git é rápido

■ Git é pequeno

■ A área de staging

■ Distribuído

■ Vários tipos de workflows

■ Fácil de aprender

■ Uma puta comunidade

Page 8: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

■ O que iremos ver:

■ Trabalhar com git flow

■ Uma nova maneira de pensar o uso do Git

git flow

Page 9: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Mas pra quê? Git é suficiente!

Page 10: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Só um desenvolvedor

Imagem de: http://www.slideshare.net/Linoark/the-gitflow-way

Page 11: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Parece bom

Page 12: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Dois desenvolvedores

Imagem de: http://www.slideshare.net/Linoark/the-gitflow-way

Page 13: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Ainda parece bom

Page 14: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Realidade

Imagem de: http://www.github.com

Page 15: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Afinal, o que é git flow?

■ Um conjunto de extensões para o Git

■ Um branching model simples

■ Uma solução baseada em merges

Imagem de: http://nvie.com/posts/a-successful-git-branching-model/

Page 16: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Branches principais

■ master: pronto para a produção

■ develop: mais recente para a próxima release

Page 17: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Branches principais

Git inicial para criar o branch develop, inicia o desenvolvimento

Page 18: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Branches de suporte

■ feature

■ release

■ hotfix

Page 19: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

feature branches

■ Deve vir do branch develop

■ Deve voltar ao branch develop

■ Convenção de nome feature/*

Page 20: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

feature branches

■ Criar um branch de feature

■ Quando iniciar a nova feature, partir do branch develop

■ $ git checkout -b feature/minha-feature develop

Page 21: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

feature branches

■ Incorporar uma feature finalizada ao develop

■ Fazer merge no branch develop

■ $ git checkout develop

■ $ git merge --no-ff feature/minha-feature

■ $ git branch -d feature/minha-feature

■ $ git push origin develop

Page 22: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

feature branches

■ A flag --no-ff evita que informações de histórico da feature sejam perdidas

Page 23: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Page 24: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Page 25: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Page 26: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

release branches

■ Deve vir do branch develop

■ Deve voltar aos branches develop e master

■ Convenção de nome: release/*

Page 27: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

release branches

■ Criando um branch de release

■ $ git checkout -b release/1.0 develop

■ Finalizando um branch de release ■ $ git checkout master

■ $ git merge --no-ff release/1.0

■ $ git tag -a 1.0

■ $ git checkout develop

■ $ git merge --no-ff release/1.0

■ $ git branch -d release/1.0

■ $ git push origin --all --tags

Page 28: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Page 29: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Page 30: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Page 31: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

hotfix branches

■ Deve vir do branch master

■ Deve voltar aos branches develop e master

■ Convenção de nome: hotfix/*

Page 32: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

hotfix branches

■ Criando um branch de hotfix

■ $ git checkout -b hotfix/1.0.1 master

■ Finalizando um branch de hotfix ■ $ git checkout master

■ $ git merge --no-ff hotfix/1.0.1

■ $ git checkout develop

■ $ git merge --no-ff hotfix/1.0.1

■ $ git branch -d hotfix/1.0

■ $ git push origin master

Page 33: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Page 34: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Page 35: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Page 36: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Dicas ■ Dicas de utilização do Git

■ Ferramentas

Page 37: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Aprenda Git pela linha de comando com muito amor, pare de usar GUI

GUI são extremamente falhos quando se tratam de merge e branching

Page 38: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Somente algumas pessoas devem ser autorizadas a fazer merge do branch develop no master

para fazer a última revisão durante o merge por líderes técnicos

Page 39: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Confira códigos alheios pelo menos uma vez ao dia

é melhor conferir sempre que possível

Page 40: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Tenha certeza de que todos os testes estão passando antes de fazer push

Page 41: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Não faça push de códigos não-testados, incompletos, não-compilando, a-ser-corrigido, não-pronto-para-deploy para o Git

faça push somente quando o código estiver pronto para deploy

Page 42: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Faça comentários de distinção significativas para os commits

inclua ids de bugs ou histórias de usuário também

Page 43: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Nunca use a flag -m <mensagem> nos commits e siga as boas práticas das mensagens de commit

■ Primeira linha com 50 caracteres ou menos. Ela é o resumo

■ Uma linha em branco

■ O restante do texto deve ser quebrado em 72 caracteres. Ele é a descrição detalhada

Page 44: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Agrupe (git squash) os commits de uma história completa em um só antes de fazer push

nós não estamos interessados nos seus commits pessoais

Page 45: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Agrupe os commits de um bug fix em apenas um commit que realmente representa aquele bug fix

Page 46: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Nunca agrupe componentes logicamente diferentes em um mesmo commit

pense também no revert

Page 47: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Faça vários commits, perfeccione depois, publique apenas uma vez

Page 48: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Use o .gitignore para não levar arquivos irrelevantes

nunca faça push de binários irrelevantes, pacotes, arquivos compilados, arquivos temporários, arquivos relacionados ao IDE e ao SO

Page 49: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Sempre revise seu código antes de fazer um commit

confira o que você está enviando para a área de staging

Page 50: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Limpe branches não utilizados e desatualizados

e nunca exclua branches remotos que não foram mesclados

Page 51: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Não faça reset sem antes fazer stash ou commit

ninguém quer perder códigos, né?

Page 52: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Ferramentas

■ git flow: extensão para a linha de comando

■ git up: extensão para a linha de comando que ajuda bastante na hora de fazer pull

■ http://gitup.co/: GUI que forma o graph em tempo real

■ https://github.com/github/gitignore: Uma coleção de templates para o .gitignore

Page 53: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Referências

■ http://nvie.com/posts/a-successful-git-branching-model/

■ https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

■ http://www.slideshare.net/Linoark/the-gitflow-way

■ http://www.slideshare.net/kenziii/gitflow-model

■ http://www.slideshare.net/lemiorhan/git-branching-model

■ http://www.slideshare.net/lemiorhan/git-and-git-workflow-models-as-catalysts-of-software-development

Page 54: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

FIMhttp://about.me/lucasmezencio

http://slideshare.net/lucasmezencio

54