SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
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
Fluxo de desenvolvimento de software utilizando Git
Colabore.
Inove.
Transforme.
Ci&T
Fluxo de desenvolvimento de software utilizando Git
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ível
ao
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 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.
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 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
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 master
git pull
git pull origin cersei-feature
git 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?
Bruto
mesmo!
http://www.ciandt.com/card/vagas-abertas
bricardo@ciandt.com

Mais conteúdo relacionado

Mais procurados

Testes com xUnit + Coding Dojo
Testes com xUnit + Coding DojoTestes com xUnit + Coding Dojo
Testes com xUnit + Coding DojoLetticia Nicoli
 
Controle de versão com Git e BitBucket
Controle de versão com Git e BitBucketControle de versão com Git e BitBucket
Controle de versão com Git e BitBucketMarcio Barbosa
 
Compartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.jsCompartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.jsGiovanni Bassi
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Erik Cruz
 
Docker como super comando
Docker como super comandoDocker como super comando
Docker como super comandoRafael Gomes
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?Letticia Nicoli
 
Introdução ao Habitat
Introdução ao HabitatIntrodução ao Habitat
Introdução ao HabitatIgor Abade
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Criciúma Dev
 
.NET, Microsoft Azure e Tecnologias Open Source - Americana Tech Conf - Novem...
.NET, Microsoft Azure e Tecnologias Open Source - Americana Tech Conf - Novem....NET, Microsoft Azure e Tecnologias Open Source - Americana Tech Conf - Novem...
.NET, Microsoft Azure e Tecnologias Open Source - Americana Tech Conf - Novem...Renato Groff
 
Extração de Dados na Web com MongoDB e Selenium - TDC 2018 - São Paulo
Extração de Dados na Web com MongoDB e Selenium - TDC 2018 - São PauloExtração de Dados na Web com MongoDB e Selenium - TDC 2018 - São Paulo
Extração de Dados na Web com MongoDB e Selenium - TDC 2018 - São PauloRenato Groff
 
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...Renato Groff
 

Mais procurados (12)

Testes com xUnit + Coding Dojo
Testes com xUnit + Coding DojoTestes com xUnit + Coding Dojo
Testes com xUnit + Coding Dojo
 
Controle de versão com Git e BitBucket
Controle de versão com Git e BitBucketControle de versão com Git e BitBucket
Controle de versão com Git e BitBucket
 
Compartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.jsCompartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.js
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021
 
Docker como super comando
Docker como super comandoDocker como super comando
Docker como super comando
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
 
Introdução ao Habitat
Introdução ao HabitatIntrodução ao Habitat
Introdução ao Habitat
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
 
.NET, Microsoft Azure e Tecnologias Open Source - Americana Tech Conf - Novem...
.NET, Microsoft Azure e Tecnologias Open Source - Americana Tech Conf - Novem....NET, Microsoft Azure e Tecnologias Open Source - Americana Tech Conf - Novem...
.NET, Microsoft Azure e Tecnologias Open Source - Americana Tech Conf - Novem...
 
Python e frameworks web
Python e frameworks webPython e frameworks web
Python e frameworks web
 
Extração de Dados na Web com MongoDB e Selenium - TDC 2018 - São Paulo
Extração de Dados na Web com MongoDB e Selenium - TDC 2018 - São PauloExtração de Dados na Web com MongoDB e Selenium - TDC 2018 - São Paulo
Extração de Dados na Web com MongoDB e Selenium - TDC 2018 - São Paulo
 
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...
 

Destaque

Design Patterns - Conhecendo os padrões de projeto
Design Patterns - Conhecendo os padrões de projetoDesign Patterns - Conhecendo os padrões de projeto
Design Patterns - Conhecendo os padrões de projetoVinicius Quaiato
 
Desvendando padrões para desenvolvimento web, base para o sucesso
Desvendando padrões para desenvolvimento web, base para o sucessoDesvendando padrões para desenvolvimento web, base para o sucesso
Desvendando padrões para desenvolvimento web, base para o sucessoUbiratan Z. do Nascimento
 
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...Fernando Geraldo Mantoan
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - IntroduçãoRodrigo Branas
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasRodrigo Branas
 
Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Javaalexmacedo
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionaisalexculpado
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHPAugusto Pascutti
 

Destaque (16)

Design Patterns - Conhecendo os padrões de projeto
Design Patterns - Conhecendo os padrões de projetoDesign Patterns - Conhecendo os padrões de projeto
Design Patterns - Conhecendo os padrões de projeto
 
Desvendando padrões para desenvolvimento web, base para o sucesso
Desvendando padrões para desenvolvimento web, base para o sucessoDesvendando padrões para desenvolvimento web, base para o sucesso
Desvendando padrões para desenvolvimento web, base para o sucesso
 
Design pattern
Design patternDesign pattern
Design pattern
 
Introdução ao Git
Introdução ao Git   Introdução ao Git
Introdução ao Git
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Git vs. SVN
Git vs. SVNGit vs. SVN
Git vs. SVN
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - Introdução
 
Design Patterns com PHP
Design Patterns com PHPDesign Patterns com PHP
Design Patterns com PHP
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
Webstandards
WebstandardsWebstandards
Webstandards
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo BranasNode.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
 
Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Java
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
 

Semelhante a Fluxo de desenvolvimento de software utilizando Git

Controlo de Versões Distribuído com Git
Controlo de Versões Distribuído com GitControlo de Versões Distribuído com Git
Controlo de Versões Distribuído com GitC. Augusto Proiete
 
Workshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHubWorkshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHubGilson Junior
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorFelipe Pedroso
 
Git e boas praticas!
Git e boas praticas!Git e boas praticas!
Git e boas praticas!Vitor Silva
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourcetdc-globalcode
 
Workshop sistema de versionamento de código - git
Workshop  sistema de versionamento de código - gitWorkshop  sistema de versionamento de código - git
Workshop sistema de versionamento de código - gitThiago Filadelfo
 
PDC - Engenharia - Git e Gitorious
PDC - Engenharia - Git e GitoriousPDC - Engenharia - Git e Gitorious
PDC - Engenharia - Git e Gitoriousslides_teltools
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao gitDiogo Gomes
 

Semelhante a Fluxo de desenvolvimento de software utilizando Git (20)

Controlo de Versões Distribuído com Git
Controlo de Versões Distribuído com GitControlo de Versões Distribuído com Git
Controlo de Versões Distribuído com Git
 
Git para quem vem do SVN
Git para quem vem do SVNGit para quem vem do SVN
Git para quem vem do SVN
 
Workshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHubWorkshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHub
 
Go git - Presentation @Navita
Go git - Presentation @NavitaGo git - Presentation @Navita
Go git - Presentation @Navita
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
 
Git e boas praticas!
Git e boas praticas!Git e boas praticas!
Git e boas praticas!
 
Curso git-0001
Curso git-0001Curso git-0001
Curso git-0001
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
 
Workshop sistema de versionamento de código - git
Workshop  sistema de versionamento de código - gitWorkshop  sistema de versionamento de código - git
Workshop sistema de versionamento de código - git
 
Primeiros passos - GIT
Primeiros passos - GITPrimeiros passos - GIT
Primeiros passos - GIT
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
Introdução ao git e github
Introdução ao git e githubIntrodução ao git e github
Introdução ao git e github
 
Git
GitGit
Git
 
PDC - Engenharia - Git e Gitorious
PDC - Engenharia - Git e GitoriousPDC - Engenharia - Git e Gitorious
PDC - Engenharia - Git e Gitorious
 
Git para Designers
Git para DesignersGit para Designers
Git para Designers
 
Introducao ao Git
Introducao ao GitIntroducao ao Git
Introducao ao Git
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 
GIT - Hands-On
GIT - Hands-On GIT - Hands-On
GIT - Hands-On
 

Mais de Bruno Ricardo Siqueira

Managing e commerce systems codebase with git
Managing e commerce systems codebase with gitManaging e commerce systems codebase with git
Managing e commerce systems codebase with gitBruno Ricardo Siqueira
 
Construindo aplicações CLI com Symfony Console
Construindo aplicações CLI com Symfony ConsoleConstruindo aplicações CLI com Symfony Console
Construindo aplicações CLI com Symfony ConsoleBruno Ricardo Siqueira
 
TDC SP 2015 - PHP7: melhor e mais rápido
TDC SP 2015 - PHP7: melhor e mais rápidoTDC SP 2015 - PHP7: melhor e mais rápido
TDC SP 2015 - PHP7: melhor e mais rápidoBruno Ricardo Siqueira
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerBruno Ricardo Siqueira
 

Mais de Bruno Ricardo Siqueira (6)

Managing e commerce systems codebase with git
Managing e commerce systems codebase with gitManaging e commerce systems codebase with git
Managing e commerce systems codebase with git
 
Construindo aplicações CLI com Symfony Console
Construindo aplicações CLI com Symfony ConsoleConstruindo aplicações CLI com Symfony Console
Construindo aplicações CLI com Symfony Console
 
TDC SP 2015 - PHP7: better & faster
TDC SP 2015 - PHP7: better & fasterTDC SP 2015 - PHP7: better & faster
TDC SP 2015 - PHP7: better & faster
 
TDC SP 2015 - PHP7: melhor e mais rápido
TDC SP 2015 - PHP7: melhor e mais rápidoTDC SP 2015 - PHP7: melhor e mais rápido
TDC SP 2015 - PHP7: melhor e mais rápido
 
Impulsionando sua presença Online
Impulsionando sua presença OnlineImpulsionando sua presença Online
Impulsionando sua presença Online
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando Docker
 

Fluxo de desenvolvimento de software utilizando Git

  • 1. Fluxo de Desenvolvimento de Software utilizando Git Bruno Ricardo Siqueira
  • 3. Agenda ● O palestrante ● CI&T ● GIT o Origem e evolução o Diferenciais o Ferramentas o Quem está utilizando
  • 4. Agenda ● Fluxos de desenvolvimento o Centralizado o Integração gerenciada o Dictator and Lieutenants o Feature Branch o Gitflow
  • 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
  • 11. Git
  • 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
  • 22. Git - Quem está utilizando? ● Empresas de tecnologia e software ● Empresas de telecomunicações ● ...
  • 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...
  • 39. Fluxos de desenvolvimento - GitFlow GitFlow utilizado em ferramentas como SourceTree e SmartGit
  • 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...