GIT: Controle de VersõesDistribuído para Projetos       de Software    Parte 1Gilmar Pupo  @gpupo
Sobre @gpupo• Desenvolvedor e consultor em GTI• Dependente de documentação, bookmarks e  anotações• Doctrine ORM, Symfony ...
Objetivos• Entender o conceito distribuído• Entender os comandos básicos• Entender branching model                   GIT S...
Documentação• Anote• Tweet #maisagil• www.delicious.com/gpupo/git                 GIT SCM para Projetos de Software. @gpupo
Conceitos• Transformar ou modernizar?• Estruturas convencionais atendem as  necessidades atuais?• Tecnologia versus Conhec...
Version control system           VCS• um software para gerenciar  diferentes versões de um documento  qualquer• o processo...
Version control system             VCS• Backup (?!)• Histórico• Trabalho em equipe• Marcação e resgate de versões  estávei...
Modelo centralizado• Repositório fica armazanedo em  servidor central• Desenvolvedores ao fazerem checkout,  obtêm uma cóp...
Modelo centralizado        GIT SCM para Projetos de Software. @gpupo
Modelo centralizado        GIT SCM para Projetos de Software. @gpupo
Modelo distribuído• Cada projeto é um repositório  completo, com histórico total• Independe de acesso à rede ou um  servid...
Modelo distribuído        GIT SCM para Projetos de Software. @gpupo
Modelo distribuído        GIT SCM para Projetos de Software. @gpupo
Modelo distribuído        GIT SCM para Projetos de Software. @gpupo
Modelo distribuído•   Modelo organizacional•   Recursos da rede•   Diffs velozes e furiosos•   Clone do repositório localh...
Modelo distribuído  Distributed  DistributedVersion ControlVersion Control   Systems   Systems        = DVCS              ...
DVCSs•   BitKeeper•   git•   Mercurial•   Bazaar•   darcs•   Monotone                 GIT SCM para Projetos de Software. @...
GIT•   Open Source (GPL v2)•   Originalmente escrito por Linus Torvalds em 2005•   Mantido por Junio Hamano•   Desenvolvid...
GIT “How many have done a branch and merged it? How many ofyou enjoyed it?”“When you do a merge, you plan ahead for a week...
Histórico now!                 GIT                 GIT SCM para Projetos de Software. @gpupo
Why!?
Why!?branches baratos(“ramificações”, "bifurcações", ou "galhos")                               GIT SCM para Projetos de S...
Branches baratos  Criar um branch para testar uma idéia, fazer commit algumas vezes, voltar para a partir• de onde você fe...
Why!? Tudo é local• Existe muito  pouco fora de  fetch, pull,  push que  comunica de  alguma maneira  com qualquer  coisa ...
Why!?• Veloz• Social• Pequeno              GIT SCM para Projetos de Software. @gpupo
Why!?área intermediária●        GIT SCM para Projetos de Software. @gpupo
Area intermediária                            (staging ou index)• você pode configurar como você quer que  seu commit fiqu...
Qualquer workflow• Você pode facilmente implementar  praticamente qualquer fluxo de  trabalho que puder pensar com  facili...
Aderência●6 meses de monitoramento●Desafogar a fila●Acompanhamento           GIT SCM para Projetos de Software. @gpupo
?o.O
Projetos utilizando GIT Amarok         Linux kernel          Qt Android        Linux Mint            Rsync CakePHP        ...
Resourcesgit.or.czgitcasts.comdel.icio.us/popular/git#git / #github             GIT SCM para Projetos de Software. @gpupo
Perguntas?    GIT SCM para Projetos de Software. @gpupo
Parte 2 :Mão na massa....      Vai!       GIT SCM para Projetos de Software. @gpupo
Controle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de software
Upcoming SlideShare
Loading in …5
×

Controle de versões distribuído para projetos de software

2,213 views

Published on

Apresentação utilizada na parte 1 do treinamento "GIT: Controle de versões distribuído para projetos de software"

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,213
On SlideShare
0
From Embeds
0
Number of Embeds
115
Actions
Shares
0
Downloads
49
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Controle de versões distribuído para projetos de software

  1. 1. GIT: Controle de VersõesDistribuído para Projetos de Software Parte 1Gilmar Pupo @gpupo
  2. 2. Sobre @gpupo• Desenvolvedor e consultor em GTI• Dependente de documentação, bookmarks e anotações• Doctrine ORM, Symfony framework, Perl, Bash, Linux, jQuery mobile• Membro e co-fundador do #maisagil• Empreendedor no @hotellinux www.gilmar.eti.br www.gpupo.com = livro GIT SCM para Projetos de Software. @gpupo
  3. 3. Objetivos• Entender o conceito distribuído• Entender os comandos básicos• Entender branching model GIT SCM para Projetos de Software. @gpupo
  4. 4. Documentação• Anote• Tweet #maisagil• www.delicious.com/gpupo/git GIT SCM para Projetos de Software. @gpupo
  5. 5. Conceitos• Transformar ou modernizar?• Estruturas convencionais atendem as necessidades atuais?• Tecnologia versus Conhecimento• A guerra em fileiras ou em células?• Evolução organizacional GIT SCM para Projetos de Software. @gpupo
  6. 6. Version control system VCS• um software para gerenciar diferentes versões de um documento qualquer• o processo de guardar o histórico de alterações de diferentes arquivos Semelhante a slots em seu video game GIT SCM para Projetos de Software. @gpupo
  7. 7. Version control system VCS• Backup (?!)• Histórico• Trabalho em equipe• Marcação e resgate de versões estáveis• Ramificações Construção facial GIT SCM para Projetos de Software. @gpupo
  8. 8. Modelo centralizado• Repositório fica armazanedo em servidor central• Desenvolvedores ao fazerem checkout, obtêm uma cópia da última revisão do repositório• Somente usuários autorizados podem fazer commits (brecha de tempo!) GIT SCM para Projetos de Software. @gpupo
  9. 9. Modelo centralizado GIT SCM para Projetos de Software. @gpupo
  10. 10. Modelo centralizado GIT SCM para Projetos de Software. @gpupo
  11. 11. Modelo distribuído• Cada projeto é um repositório completo, com histórico total• Independe de acesso à rede ou um servidor central, Commits podem ser feitos offline a qualquer momento• Commits podem ser transferidos de um repositório para outro facilmente GIT SCM para Projetos de Software. @gpupo
  12. 12. Modelo distribuído GIT SCM para Projetos de Software. @gpupo
  13. 13. Modelo distribuído GIT SCM para Projetos de Software. @gpupo
  14. 14. Modelo distribuído GIT SCM para Projetos de Software. @gpupo
  15. 15. Modelo distribuído• Modelo organizacional• Recursos da rede• Diffs velozes e furiosos• Clone do repositório localhttp://t.co/7W3uxWo GIT SCM para Projetos de Software. @gpupo
  16. 16. Modelo distribuído Distributed DistributedVersion ControlVersion Control Systems Systems = DVCS GIT SCM para Projetos de Software. @gpupo
  17. 17. DVCSs• BitKeeper• git• Mercurial• Bazaar• darcs• Monotone GIT SCM para Projetos de Software. @gpupo
  18. 18. GIT• Open Source (GPL v2)• Originalmente escrito por Linus Torvalds em 2005• Mantido por Junio Hamano• Desenvolvido para manter o Kernel do Linux• Sistema de controle de versões distribuído• Foco em rapidez, eficiência e uso em grandes projetos GIT SCM para Projetos de Software. @gpupo
  19. 19. GIT “How many have done a branch and merged it? How many ofyou enjoyed it?”“When you do a merge, you plan ahead for a week, then set asidea day to do it.”“Some people have 5, 10, 15 branches”. One branch isexperimental. One branch is maintenance, etc.“CVS — you don’t commit. You make changes withoutcommitting. You never commit until it passes a giant test suite.People make 1-liner changes, knowing it can’t possibly break.” Linus Torvalds GIT SCM para Projetos de Software. @gpupo
  20. 20. Histórico now! GIT GIT SCM para Projetos de Software. @gpupo
  21. 21. Why!?
  22. 22. Why!?branches baratos(“ramificações”, "bifurcações", ou "galhos") GIT SCM para Projetos de Software. @gpupo
  23. 23. Branches baratos Criar um branch para testar uma idéia, fazer commit algumas vezes, voltar para a partir• de onde você fez o branch, aplicar um patch (conjunto de modificações), voltar para onde está experimentando, então fazer merge. Ter um branch que sempre contém somente o que vai para produção, outro onde você• faz merge do trabalho para testar e várias outras menores para atividades do dia a dia. Criar novas branches para cada nova funcionalidade que estiver trabalhando, para que• você possa mudar de uma para outra com facilidade, então deletar cada branch quando essa fizer merge dessa funcionalidade na linha principal. Criar um branch para experimentar, descobrir que não vai funcionar e somente deletá-la,• abandonando o trabalho - sem que ninguém veja isso (mesmo se você tiver trabalhado outras branches no meio do caminho). GIT SCM para Projetos de Software. @gpupo
  24. 24. Why!? Tudo é local• Existe muito pouco fora de fetch, pull, push que comunica de alguma maneira com qualquer coisa além do seu disco rígido. GIT SCM para Projetos de Software. @gpupo
  25. 25. Why!?• Veloz• Social• Pequeno GIT SCM para Projetos de Software. @gpupo
  26. 26. Why!?área intermediária● GIT SCM para Projetos de Software. @gpupo
  27. 27. Area intermediária (staging ou index)• você pode configurar como você quer que seu commit fique antes de fazê-lo.• você pode facilmente ir colocando seus arquivos nela à medida que for terminando e então fazer commit deles sem fazer commit de todos os arquivos modificados, ou ter que listá-los na linha de comando durante o commit. GIT SCM para Projetos de Software. @gpupo
  28. 28. Qualquer workflow• Você pode facilmente implementar praticamente qualquer fluxo de trabalho que puder pensar com facilidade Até mesmo svn style! GIT SCM para Projetos de Software. @gpupo
  29. 29. Aderência●6 meses de monitoramento●Desafogar a fila●Acompanhamento GIT SCM para Projetos de Software. @gpupo
  30. 30. ?o.O
  31. 31. Projetos utilizando GIT Amarok Linux kernel Qt Android Linux Mint Rsync CakePHP Maemo Ruby on Rails cURL MeeGo Samba Debian Mono Starlink Digg MooTools Sugar Eclipse One Laptop Per Xfce Fedora Child (OLPC) Yahoo! UI Library GIMP Perl Zend Framework GNOME phpBB Symfony GTK+ Prototype.js Framework jQuery http://en.wikipedia.org/wiki/Git_(software) GIT SCM para Projetos de Software. @gpupo
  32. 32. Resourcesgit.or.czgitcasts.comdel.icio.us/popular/git#git / #github GIT SCM para Projetos de Software. @gpupo
  33. 33. Perguntas? GIT SCM para Projetos de Software. @gpupo
  34. 34. Parte 2 :Mão na massa.... Vai! GIT SCM para Projetos de Software. @gpupo

×