Upload
bruno-ricardo-siqueira
View
344
Download
2
Embed Size (px)
Citation preview
Fluxo de Desenvolvimento de Software utilizando Git
Bruno Ricardo Siqueira
Agenda
Agenda
● O palestrante
● CI&T
● GIT
o Origem e evolução
o Diferenciais
o Ferramentas
o Quem está utilizando
Agenda
● Fluxos de
desenvolvimento
o Centralizado
o Integração
gerenciada
o Dictator and
Lieutenants
o Feature Branch
o Gitflow
Agenda
● Conclusões
● Perguntas
O palestrante
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
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
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
Git - Origem e evolução
20102009 2014
2,4%
Fonte: Eclipse Community Survey - http://eclipse.dzone.com/articles/eclipse-community-survey-2014
33,3%
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.
Git: an unpleasant
or contemptible
person.
“I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git.”
- Linus Torvalds
Git - Origem e evolução
Git - Diferenciais
● Distribuído
● Integridade do código
garantida
● Staging area
● Licenciado sob GNU Public
License v 2.0: OPEN
SOURCE!!!
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
Flexívelao
extremo.
Git - Ferramentas
Git - Quem está utilizando?
● Empresas de tecnologia e
software
● Empresas de
telecomunicações
● ...
Fluxos de desenvolvimento
Fluxos de desenvolvimento - Centralizado
● Mesmo estilo do Subversion
● Repositório central
compartilhado
● Bom para efetuar a
transição do SVN para o Git
Mesmo fluxo do
Subversion só que ainda
melhor!
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
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.
Joffrey publica sua funcionalidade:
git push origin master
Fluxos de desenvolvimento - Centralizado
Cersei tenta publicar sua funcionalidade mas tem sua requisição recusada.
Cersei faz um rebase de suas alterações em cima das alterações de Joffrey:
git pull --rebase origin master
Fluxos de desenvolvimento - Centralizado
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
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, ....
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
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...
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
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.
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.
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...
Fluxos de desenvolvimento - GitFlow
Fluxos de desenvolvimento - GitFlow
GitFlow utilizado em ferramentas como SourceTree e SmartGit
Conclusões
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
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...
Dúvidas?