7. 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
12. 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
13. 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
14. Git - Origem e evolução
20102009 2014
2,4%
Fonte: Eclipse Community Survey - http://eclipse.dzone.com/articles/eclipse-community-survey-2014
33,3%
15. 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.
17. “I'm an egotistical bastard, and I
name all my projects after myself.
First Linux, now git.”
- Linus Torvalds
Git - Origem e evolução
18. Git - Diferenciais
● Distribuído
● Integridade do código garantida
● Staging area
● Licenciado sob GNU Public
License v 2.0: OPEN
SOURCE!!!
19. 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
24. Fluxos de desenvolvimento - Centralizado
● Mesmo estilo do Subversion
● Repositório central
compartilhado
● Bom para efetuar a transição do
SVN para o Git
26. 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
27. Joffrey trabalha em seu repositório
local:
git status # View the state of the repo
git add <some-file> # Stage a file
git commit # Commit a file</some-file>
Fluxos de desenvolvimento - Centralizado
Cersei trabalha em sua feature em
separado, também em seu
repositório local.
28. Joffrey publica sua funcionalidade:
git push origin master
Fluxos de desenvolvimento - Centralizado
Cersei tenta publicar sua
funcionalidade mas tem sua
requisição recusada.
29. Cersei faz um rebase de suas
alterações em cima das alterações
de Joffrey:
git pull --rebase origin master
Fluxos de desenvolvimento - Centralizado
30. 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
31. 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, ....
32. 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
33. 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...
34. Cersei inicia uma nova
funcionalidade:
git checkout -b cersei-feature master
git status
git 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
35. 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.
36. Fluxos de desenvolvimento - Feature branch
Joffrey efetua o merge da feature de
Cersei:
git checkout master
git pull
git pull origin cersei-feature
git push
Cersei pode efetuar alterações em
sua feature, recomeçando o fluxo.
37. 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...
41. 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
42. 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...