Fluxo de desenvolvimento de software utilizando Git

44
Fluxo de Desenvolvimento de Software utilizando Git Bruno Ricardo Siqueira

Transcript of Fluxo de desenvolvimento de software utilizando Git

Page 1: Fluxo de desenvolvimento de software utilizando Git

Fluxo de Desenvolvimento de Software utilizando Git

Bruno Ricardo Siqueira

Page 2: Fluxo de desenvolvimento de software utilizando Git

Agenda

Page 3: Fluxo de desenvolvimento de software utilizando Git

Agenda

● O palestrante

● CI&T

● GIT

o Origem e evolução

o Diferenciais

o Ferramentas

o Quem está utilizando

Page 4: Fluxo de desenvolvimento de software utilizando Git

Agenda

● Fluxos de

desenvolvimento

o Centralizado

o Integração

gerenciada

o Dictator and

Lieutenants

o Feature Branch

o Gitflow

Page 5: Fluxo de desenvolvimento de software utilizando Git

Agenda

● Conclusões

● Perguntas

Page 6: Fluxo de desenvolvimento de software utilizando Git

O palestrante

Page 7: Fluxo de desenvolvimento de software utilizando Git

Bruno Ricardo Siqueira.

Desenvolvedor web e evangelista PHP no Brasil. Entusiasta Docker. Apaixonado por Git.

Trabalhando com internet há 8 anos, Bacharel em Sistemas da Informação formado pelo ICMC - USP, trabalhando atualmente na empresa CI&T, desempenhando o papel de Engenheiro de Software.

O palestrante

Page 8: Fluxo de desenvolvimento de software utilizando Git
Page 9: Fluxo de desenvolvimento de software utilizando Git

Colabore.

Inove.

Transforme.

Ci&T

Page 10: Fluxo de desenvolvimento de software utilizando Git
Page 11: Fluxo de desenvolvimento de software utilizando Git

Git

Page 12: Fluxo de desenvolvimento de software utilizando Git

Git - Origem e evoluçãoGit - Origem e evolução

● 2002 - 2005: Linux +

BitKeeper

● Abril/2005: Linus Torvalds

cria o Git

● Junho/2005: Git passa a ser

o gerenciador oficial do

Kernel do Linux

Page 13: Fluxo de desenvolvimento de software utilizando Git

Git - Origem e evolução

● Julho/2005: Junio Hamano

passa a ser o mantenedor

oficial

● Dezembro/2005: Versão

1.0

● Fevereiro/2008: Nasce a

ferramenta colaborativa

GitHub

● Outubro/2011: BitBucket

adiciona suporte ao Git

Page 14: Fluxo de desenvolvimento de software utilizando Git

Git - Origem e evolução

20102009 2014

2,4%

Fonte: Eclipse Community Survey - http://eclipse.dzone.com/articles/eclipse-community-survey-2014

33,3%

Page 15: Fluxo de desenvolvimento de software utilizando Git

Em 2015 já são mais de 20 milhões

de repositórios e 9 milhões de usuários.

Git - Origem e evolução

Em 2013 apenas no GitHub existiam mais de 10 milhões de repositórios ativos.

Page 16: Fluxo de desenvolvimento de software utilizando Git

Git: an unpleasant

or contemptible

person.

Page 17: Fluxo de desenvolvimento de software utilizando Git

“I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git.”

- Linus Torvalds

Git - Origem e evolução

Page 18: Fluxo de desenvolvimento de software utilizando Git

Git - Diferenciais

● Distribuído

● Integridade do código

garantida

● Staging area

● Licenciado sob GNU Public

License v 2.0: OPEN

SOURCE!!!

Page 19: Fluxo de desenvolvimento de software utilizando Git

Git - Diferenciais

● Branching and Merging

o mudança de contexto

facilitada

o codebases baseadas

em regras

● Leve: baixo consumo de

memória

● Robusto: criado para lidar

com codebases gigantescas

● Rápido, muito rápido

Fonte: Git Website - http://git-scm.com

Page 20: Fluxo de desenvolvimento de software utilizando Git

Flexívelao

extremo.

Page 21: Fluxo de desenvolvimento de software utilizando Git

Git - Ferramentas

Page 22: Fluxo de desenvolvimento de software utilizando Git

Git - Quem está utilizando?

● Empresas de tecnologia e

software

● Empresas de

telecomunicações

● ...

Page 23: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento

Page 24: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - Centralizado

● Mesmo estilo do Subversion

● Repositório central

compartilhado

● Bom para efetuar a

transição do SVN para o Git

Page 25: Fluxo de desenvolvimento de software utilizando Git

Mesmo fluxo do

Subversion só que ainda

melhor!

Page 26: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - Centralizado

Joffrey cria um repositório central:

ssh joffrey@westeros git init --bare /kings/landing/iron-throne.git

Cersei e Tywin clonam o repositório

central:

git clone cersei@westeros/kings/landing/iron-

throne.git

git clone tywin@westeros/kings/landing/iron-

throne.git

Page 27: Fluxo de desenvolvimento de software utilizando Git

Joffrey trabalha em seu repositório local:

git status # View the state of the repogit add <some-file> # Stage a filegit commit # Commit a file</some-file>

Fluxos de desenvolvimento - Centralizado

Cersei trabalha em sua feature em separado, também em seu repositório local.

Page 28: Fluxo de desenvolvimento de software utilizando Git

Joffrey publica sua funcionalidade:

git push origin master

Fluxos de desenvolvimento - Centralizado

Cersei tenta publicar sua funcionalidade mas tem sua requisição recusada.

Page 29: Fluxo de desenvolvimento de software utilizando Git

Cersei faz um rebase de suas alterações em cima das alterações de Joffrey:

git pull --rebase origin master

Fluxos de desenvolvimento - Centralizado

Page 30: Fluxo de desenvolvimento de software utilizando Git

Cersei soluciona os conflitos, adiciona suas alterações:

git add <some-file> git rebase --continue

Fluxos de desenvolvimento - Centralizado

Cersei publica suas alterações:

git push origin master

Page 31: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - Integração gerenciada

● Somente o mantenedor do

efetua commits no

repositório original

● Contribuidores trabalham

em forks.

● Integrações são solicitadas

via pull request e

efetuadas pelo mantenedor

● GitHub, BitBucket,

GitLab, ....

Page 32: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - Dictator and Lieutenants

● Tenentes gerenciam

repositórios dos módulos

● Contribuidores trabalham

em forks dos módulos

● Ditador gerencia

integrações entre os

módulos

● Linux kernel

Page 33: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - Feature branch

● Features desenvolvidas em

branches separadas

● Mantenedor efetua merge

das features finalizadas

● Merge e/ou pull requests

● CI&T, Aptor, Google, PayPal,

Facebook...

Page 34: Fluxo de desenvolvimento de software utilizando Git

Cersei inicia uma nova funcionalidade:

git checkout -b cersei-feature mastergit statusgit add <some-file>git commit

Fluxos de desenvolvimento - Feature branch

Cersei termina seu expediente e envia sua feature ao repositório remoto:

git push -u origin cersei

Page 35: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - Feature branch

Cersei finaliza sua funcionalidade e envia ao repositório remoto central:

git push

Joffrey recebe um pull request e o analiza.

Page 36: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - Feature branch

Joffrey efetua o merge da feature de Cersei:

git checkout mastergit pullgit pull origin cersei-featuregit push

Cersei pode efetuar alterações em sua feature, recomeçando o fluxo.

Page 37: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - GitFlow

● Vincent Driessen (2010)

● Estabelece uma

padronização para o fluxo

de feature branches

● master, develop, feature/*,

hotfix/*

● CI&T, Motorola, Google,

Facebook, Microsoft,

Atlassian...

Page 38: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - GitFlow

Page 39: Fluxo de desenvolvimento de software utilizando Git

Fluxos de desenvolvimento - GitFlow

GitFlow utilizado em ferramentas como SourceTree e SmartGit

Page 40: Fluxo de desenvolvimento de software utilizando Git

Conclusões

Page 41: Fluxo de desenvolvimento de software utilizando Git

Conclusões

● Objetivos definidos

● A ferramenta deve se

adaptar à sua realidade

● Clareza nos processos

● Evitar burocratização

desnecessária

● Manter comunicação ativa

entre os membros do time

Page 42: Fluxo de desenvolvimento de software utilizando Git

Conclusões

● Definir métricas

● Avaliar necessidades de

adaptação do fluxo

● Foco na eficiência

● Qualidade nas entregas

● Criar e manter

documentação do fluxo:

gráficos, checklists...

Page 43: Fluxo de desenvolvimento de software utilizando Git

Dúvidas?

Page 44: Fluxo de desenvolvimento de software utilizando Git

Brutomesmo!

http://www.ciandt.com/card/vagas-abertas

[email protected]