Successfully reported this slideshow.
Your SlideShare is downloading. ×

Gerenciadores de Controle de Versão: Git, Mercurial e Bazaar

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
VoltDB talk at QCON-Brasil
VoltDB talk at QCON-Brasil
Loading in …3
×

Check these out next

1 of 41 Ad

More Related Content

Viewers also liked (20)

Similar to Gerenciadores de Controle de Versão: Git, Mercurial e Bazaar (20)

Advertisement

Recently uploaded (20)

Gerenciadores de Controle de Versão: Git, Mercurial e Bazaar

  1. 1. Controle de versão: Git, Mercurial, Bazaar Doutorado em Ciência da Computação Disciplina de Software Livre, Prof. Dr. Fabio Kon DINTER IME/USP-UTFPR Fevereiro/2012 By Igor F. Steinmacher, Igor S. Wiese, Ivanilton Polato. These slides are licensed under the Attibution-ShareAlike 3.0 Brasil License (CC BY-SA 3.0)
  2. 2. Roteiro • Visão geral sobre controle de Versão • Histórico • Benefícios de um Sistema Gerenciador de Controle de Versão • Diferenças entre Controle de Versão Central e Distribuído • Operações Básicas • Vocabulário comum • Git, Mercurial, Bazaar • Histórico • Principais recursos (especificidades) • Integração com outras ferramentas • Comparativo
  3. 3. I – Conceitos básicos X http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/
  4. 4. Histórico Centralizado 1990 2000 Distribuído 2005 16 Junho kernel 2.6.12
  5. 5. CVS Dick Grune Karl Fogel Criador Líder do projeto SVN Outras fontes de informação CVS • http://cvs.nongnu.org/ • http://en.wikipedia.org/wiki/Concurrent_Versions_System Subversion • http://subversion.apache.org/ • http://wiki.apache.org/subversion/ • http://en.wikipedia.org/wiki/SVN
  6. 6. Benefícios do Sistema Gerenciador de Controle de Versão (SCV) Manter histórico Colaboração Variações do projeto
  7. 7. Arquitetura de um SCV Centralizado Adaptado de pronus.eng.br
  8. 8. Operações básicas de um SCV Centralizado
  9. 9. Operações básicas de um SCV Centralizado Cada commit cria uma nova revisão, números sequenciais
  10. 10. Operações básicas de um SCV Centralizado
  11. 11. Sincronização no SCV Centralizado Fonte: pronus.eng.br
  12. 12. Problemas SCV centralizado
  13. 13. Arquitetura de um SCV Distribuído Fonte: pronus.eng.br
  14. 14. Operações Básicas de um SCV Distribuído Fonte: pronus.eng.br
  15. 15. Sincronização no SCV Distribuído Fonte: pronus.eng.br
  16. 16. II - SCV Distribuídos
  17. 17. Linus Torvalds Junio Hamano Criador Mantenedor Outras fontes de informação: • http://git-scm.com/ • http://book.git-scm.com/ • https://git.wiki.kernel.org/ • http://en.wikipedia.org/wiki/Git_%28software%29 V2
  18. 18. Projetos que utilizam o Git
  19. 19. Hospedagem repo.or.cz Savannah
  20. 20. Workflow Básico
  21. 21. Comandos Básicos 1. git clone URL (= checkout SVN) • Clona um repositório 2. git checkout -b NOME_BRANCH • Cria um Branch. Uma das maiores vantagens do git é a facilidade de criar branches e mesclá-los posteriormente via merge • -b cria o branch • checkout, faz você trocar de branch 3. git commit –a –m “MENSAGEM” • Como a ideia esta centrada na facilidade de merges e trabalho distribuído, todo o trabalho é feito localmente, e deve ser gravado localmente (commit) em pequenas porções • -a força o commit para TODOS os arquivos alterados • -m para adicionar a mensagem
  22. 22. Comandos Básicos 4. git add NOME_ARQUIVO ou git add -i • Neste caso é feito um commit parcial. Após estes comandos deve ser feito um commit sem o parâmetro –a 5. git checkout master git pull origin master • Na primeira vez for realizado o comando pull deve ser informado de onde (origin) e para onde (master). 6. git checkout SEU_BRANCH git rebase master • Quando as atualizações são trazidas do master é preciso sincronizar com as mudaças locais. Estas operações removem temporariamente as modificações do seu branch, aplicam os commits que estavam no master e reaplicam seus commits.
  23. 23. Comandos Básicos 7. git mergetool git rebase --continue • Quando o git não consegue resolver os conflitos, o “rebase” é interrompido. Conflitos são tratados individualmente, diferentemente do SVN que faz tudo de uma única vez. • -- continue é o parâmetro para continuar após cada conflito. • o mergetool é uma ferramenta visual de tratamento de conflitos. Existem várias disponíveis: • Meld: http://meld.sourceforge.net/install.html • Diffuse: http://diffuse.sourceforge.net/ • SourceGear: http://www.sourcegear.com/diffmerge/downloads.php
  24. 24. Comandos Básicos 8. git checkout master git merge BRANCH_LOCAL git push origin master • Quando o rebase é concluído seu repositório local esta compatível com o master. • O comando git merge aplica seus commits no master. • Push envia as alterações para o servidor remoto.
  25. 25. Matt Mackall Release 1 janeiro Criador e Mantenedor Outras fontes de informação: • http://mercurial.selenic.com/ • http://mercurial.selenic.com/wiki/ • http://en.wikipedia.org/wiki/Mercurial • http://hgbook.red-bean.com/read/ V2
  26. 26. Projetos que utilizam o Mercurial
  27. 27. Hospedagem Savannah
  28. 28. Comandos Básicos 1. hg clone REPOSITORIO • Clona um projeto para o repositório local 2. hg add ARQUIVO • Adiciona um arquivo no repositório local 3. hg commit –m “MENSAGEM” • Efetiva e documenta alterações 4. hg branch NOME_BRANCH • Cria um branch 5. hg push • Publica modificações locais para outro repositório 6. hg pull • Sincroniza com outro repositório (local ou remoto) 7. hg update • Atualiza a revisão local para a revisão do repositório principal 8. hg merge • Mescla as alterções de um Branch com outro.
  29. 29. 27/10/2011 20/01/2012 Martin Pool Criador e Mantenedor Outras fontes de informação: • http://bazaar.canonical.com/en/ • http://wiki.bazaar.canonical.com/Documentation • http://en.wikipedia.org/wiki/Bazaar_%28software%29 V2
  30. 30. Projetos que utilizam o Bazaar
  31. 31. Hospedagem Savannah
  32. 32. III - Comparação vs http://en.wikipedia.org/wiki/Comparison_of_revision_control_software
  33. 33. Git vs Hg vs Bzr: Velocidade http://pt.whygitisbetterthanx.com
  34. 34. Git vs Hg vs Bzr: Velocidade init add (1 arq.) add (2000 arq.) diff 0,200 0,800 3,000 1,000 0,150 0,600 2,000 0,100 0,400 0,500 1,000 0,050 0,200 0,000 0,000 0,000 0,000 git bzr hg git bzr hg git bzr hg git bzr hg status (1 arq.) status (2000 arq.) log tag 10,000 0,800 6,000 0,150 0,600 4,000 0,100 5,000 0,400 2,000 0,050 0,200 0,000 0,000 0,000 0,000 git bzr hg git bzr hg git bzr hg git bzr hg commit (1 arq.) commit (2000 arq.) branch (frio) branch(quente) 1,500 6,000 0,800 0,150 0,600 1,000 4,000 0,100 0,400 0,500 2,000 0,050 0,200 0,000 0,000 0,000 0,000 git bzr hg git bzr hg git bzr hg git bzr hg Testes realizados por Igor F. Steimacher, Igor S. Wiese e Ivanilton Polato em 01/02/2012
  35. 35. Git vs Hg vs Bzr: Tamanho do Repositório Bzr* depois de rodar o Bzr pack Git vs Hg vs Bzr: http://pt.whygitisbetterthanx.com Tempo de Clone SVN compardo com o checkout http://pt.whygitisbetterthanx.com
  36. 36. Git vs Hg vs Bzr: Tamanho do Repositório e Tempo de Clone clone local tamanho 70,000 250000 60,000 200000 50,000 150000 40,000 30,000 100000 20,000 50000 10,000 0,000 0 git bzr hg git bzr hg Testes realizados por Igor F. Steimacher, Igor S. Wiese e Ivanilton Polato em 01/02/2012
  37. 37. Git vs Hg vs Bzr – Implementação http://www.infoq.com/br/articles/dvcs-guide
  38. 38. Dúvidas? By Igor Wiese, Igor Steinmacher, Ivanilton Polato. These slides are licensed under the Attibution-ShareAlike 3.0 Brasil License (CC BY-SA 3.0)

×