Fluxo de desenvolvimento de software utilizando Git
-
Upload
bruno-ricardo-siqueira -
Category
Software
-
view
343 -
download
2
Transcript of Fluxo de desenvolvimento de software utilizando Git
![Page 1: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/1.jpg)
Fluxo de Desenvolvimento de Software utilizando Git
Bruno Ricardo Siqueira
![Page 2: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/2.jpg)
Agenda
![Page 3: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/3.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/4.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/5.jpg)
Agenda
● Conclusões
● Perguntas
![Page 6: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/6.jpg)
O palestrante
![Page 7: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/7.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/8.jpg)
![Page 10: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/10.jpg)
![Page 11: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/11.jpg)
Git
![Page 12: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/12.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/13.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/14.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/15.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/16.jpg)
Git: an unpleasant
or contemptible
person.
![Page 17: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/17.jpg)
“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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/18.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/19.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/20.jpg)
Flexívelao
extremo.
![Page 21: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/21.jpg)
Git - Ferramentas
![Page 22: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/22.jpg)
Git - Quem está utilizando?
● Empresas de tecnologia e
software
● Empresas de
telecomunicações
● ...
![Page 23: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/23.jpg)
Fluxos de desenvolvimento
![Page 24: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/24.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/25.jpg)
Mesmo fluxo do
Subversion só que ainda
melhor!
![Page 26: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/26.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/27.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/28.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/29.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/30.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/31.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/32.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/33.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/34.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/35.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/36.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/37.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/38.jpg)
Fluxos de desenvolvimento - GitFlow
![Page 39: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/39.jpg)
Fluxos de desenvolvimento - GitFlow
GitFlow utilizado em ferramentas como SourceTree e SmartGit
![Page 40: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/40.jpg)
Conclusões
![Page 41: Fluxo de desenvolvimento de software utilizando Git](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/41.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/42.jpg)
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](https://reader031.fdocumentos.com/reader031/viewer/2022013122/55b3d322bb61eb8e218b478e/html5/thumbnails/43.jpg)
Dúvidas?