Fluxo de desenvolvimento de software utilizando Git

949 visualizações

Publicada em

Palestra ministrada no FLISOL 2015 sobre fluxos de desenvolvimento de software utilizando a ferramenta Git.

Publicada em: Software
0 comentários
6 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
949
No SlideShare
0
A partir de incorporações
0
Número de incorporações
13
Ações
Compartilhamentos
0
Downloads
17
Comentários
0
Gostaram
6
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Fluxo de desenvolvimento de software utilizando Git

  1. 1. Fluxo de Desenvolvimento de Software utilizando Git Bruno Ricardo Siqueira
  2. 2. Agenda
  3. 3. Agenda ● O palestrante ● CI&T ● GIT o Origem e evolução o Diferenciais o Ferramentas o Quem está utilizando
  4. 4. Agenda ● Fluxos de desenvolvimento o Centralizado o Integração gerenciada o Dictator and Lieutenants o Feature Branch o Gitflow
  5. 5. Agenda ● Conclusões ● Perguntas
  6. 6. O palestrante
  7. 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
  8. 8. Colabore. Inove. Transforme. Ci&T
  9. 9. Git
  10. 10. 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
  11. 11. 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
  12. 12. Git - Origem e evolução 20102009 2014 2,4% Fonte: Eclipse Community Survey - http://eclipse.dzone.com/articles/eclipse-community-survey-2014 33,3%
  13. 13. 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.
  14. 14. Git: an unpleasant or contemptible person.
  15. 15. “I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git.” - Linus Torvalds Git - Origem e evolução
  16. 16. Git - Diferenciais ● Distribuído ● Integridade do código garantida ● Staging area ● Licenciado sob GNU Public License v 2.0: OPEN SOURCE!!!
  17. 17. 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
  18. 18. Flexível ao extremo.
  19. 19. Git - Ferramentas
  20. 20. Git - Quem está utilizando? ● Empresas de tecnologia e software ● Empresas de telecomunicações ● ...
  21. 21. Fluxos de desenvolvimento
  22. 22. Fluxos de desenvolvimento - Centralizado ● Mesmo estilo do Subversion ● Repositório central compartilhado ● Bom para efetuar a transição do SVN para o Git
  23. 23. Mesmo fluxo do Subversion só que ainda melhor!
  24. 24. 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
  25. 25. 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.
  26. 26. Joffrey publica sua funcionalidade: git push origin master Fluxos de desenvolvimento - Centralizado Cersei tenta publicar sua funcionalidade mas tem sua requisição recusada.
  27. 27. Cersei faz um rebase de suas alterações em cima das alterações de Joffrey: git pull --rebase origin master Fluxos de desenvolvimento - Centralizado
  28. 28. 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
  29. 29. 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, ....
  30. 30. 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
  31. 31. 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...
  32. 32. 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
  33. 33. 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.
  34. 34. 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.
  35. 35. 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...
  36. 36. Fluxos de desenvolvimento - GitFlow
  37. 37. Fluxos de desenvolvimento - GitFlow GitFlow utilizado em ferramentas como SourceTree e SmartGit
  38. 38. Conclusões
  39. 39. 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
  40. 40. 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...
  41. 41. Dúvidas?
  42. 42. Bruto mesmo! http://www.ciandt.com/card/vagas-abertas bricardo@ciandt.com

×