SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
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)
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
I – Conceitos básicos




                X

      http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/
Histórico
                            Centralizado


 1990



 2000


                              Distribuído

 2005



              16 Junho
            kernel 2.6.12
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
Benefícios do Sistema Gerenciador
   de Controle de Versão (SCV)




  Manter histórico      Colaboração




          Variações do projeto
Arquitetura de um SCV Centralizado




                            Adaptado de pronus.eng.br
Operações básicas de um
   SCV Centralizado
Operações básicas de um
   SCV Centralizado




Cada commit cria uma nova revisão,
       números sequenciais
Operações básicas de um
   SCV Centralizado
Sincronização no SCV Centralizado




                             Fonte: pronus.eng.br
Problemas SCV centralizado
Arquitetura de um SCV Distribuído




                           Fonte: pronus.eng.br
Operações Básicas de um SCV
        Distribuído




                        Fonte: pronus.eng.br
Sincronização no SCV Distribuído




                             Fonte: pronus.eng.br
II - SCV Distribuídos
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
Projetos que utilizam o Git
Hospedagem



repo.or.cz




  Savannah
Workflow Básico
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
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.
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
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.
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
Projetos que utilizam o Mercurial
Hospedagem




Savannah
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.
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
Projetos que utilizam o Bazaar
Hospedagem




Savannah
III - Comparação



               vs

http://en.wikipedia.org/wiki/Comparison_of_revision_control_software
Git vs Hg vs Bzr: Velocidade




                       http://pt.whygitisbetterthanx.com
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
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
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
Git vs Hg vs Bzr – Implementação




                       http://www.infoq.com/br/articles/dvcs-guide
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)

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Ngrx slides
Ngrx slidesNgrx slides
Ngrx slides
 
Git (実践入門編)
Git (実践入門編)Git (実践入門編)
Git (実践入門編)
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
 
Git advanced
Git advancedGit advanced
Git advanced
 
Git Branching Model
Git Branching ModelGit Branching Model
Git Branching Model
 
Test Automation Framework using Cucumber BDD overview (part 1)
Test Automation Framework using Cucumber BDD overview (part 1)Test Automation Framework using Cucumber BDD overview (part 1)
Test Automation Framework using Cucumber BDD overview (part 1)
 
Git Branching Model
Git Branching ModelGit Branching Model
Git Branching Model
 
Gerrit Code Review
Gerrit Code ReviewGerrit Code Review
Gerrit Code Review
 
Angular Lifecycle Hooks
Angular Lifecycle HooksAngular Lifecycle Hooks
Angular Lifecycle Hooks
 
Understanding Branching and Merging in Git
Understanding Branching and Merging in GitUnderstanding Branching and Merging in Git
Understanding Branching and Merging in Git
 
초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub
 
Introduction to git flow
Introduction to git flowIntroduction to git flow
Introduction to git flow
 
BDD and Behave
BDD and BehaveBDD and Behave
BDD and Behave
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
 
Behave
BehaveBehave
Behave
 
Bitbucket and Git
Bitbucket and GitBitbucket and Git
Bitbucket and Git
 
The everyday developer's guide to version control with Git
The everyday developer's guide to version control with GitThe everyday developer's guide to version control with Git
The everyday developer's guide to version control with Git
 
Mobile Application Penetration Testing Giordano Giammaria
Mobile Application Penetration Testing Giordano GiammariaMobile Application Penetration Testing Giordano Giammaria
Mobile Application Penetration Testing Giordano Giammaria
 
Usando postman para probar un rest api
Usando postman para probar un rest apiUsando postman para probar un rest api
Usando postman para probar un rest api
 

Destaque

Controle de Mudanças com GitHub
Controle de Mudanças com GitHubControle de Mudanças com GitHub
Controle de Mudanças com GitHub
Bruno Furtado
 
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
Thiago Filadelfo
 

Destaque (20)

Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Controle de versão e colaboração com Git
Controle de versão e colaboração com GitControle de versão e colaboração com Git
Controle de versão e colaboração com Git
 
Creative Commons
Creative CommonsCreative Commons
Creative Commons
 
XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas pos...
XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas pos...XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas pos...
XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas pos...
 
Git - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotadoGit - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotado
 
Seminário Hadoop
Seminário HadoopSeminário Hadoop
Seminário Hadoop
 
GCS - Aula 02 - Conceitos Principais
GCS - Aula 02 - Conceitos PrincipaisGCS - Aula 02 - Conceitos Principais
GCS - Aula 02 - Conceitos Principais
 
Controle de Mudanças com GitHub
Controle de Mudanças com GitHubControle de Mudanças com GitHub
Controle de Mudanças com GitHub
 
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataformaWine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
 
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version ControlJoomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
 
Apresentação do SAEO na Administração Pública
Apresentação do SAEO na Administração PúblicaApresentação do SAEO na Administração Pública
Apresentação do SAEO na Administração Pública
 
GCS - Aula 09 - GCS Ágil
GCS - Aula 09 - GCS ÁgilGCS - Aula 09 - GCS Ágil
GCS - Aula 09 - GCS Ágil
 
Controle de Versão e Monitoramento de Projetos com SVN + WebSVN + StatSVN
Controle de Versão e Monitoramento de Projetos com SVN + WebSVN + StatSVNControle de Versão e Monitoramento de Projetos com SVN + WebSVN + StatSVN
Controle de Versão e Monitoramento de Projetos com SVN + WebSVN + StatSVN
 
Controle de versão com GIT
Controle de versão com GITControle de versão com GIT
Controle de versão com GIT
 
[Mini-curso] Sistema de Controle de Versão
[Mini-curso] Sistema de Controle de Versão[Mini-curso] Sistema de Controle de Versão
[Mini-curso] Sistema de Controle de Versão
 
Transformando a experiência dos times de DEV, OPS & BIZ nos Sistemas Financei...
Transformando a experiência dos times de DEV, OPS & BIZ nos Sistemas Financei...Transformando a experiência dos times de DEV, OPS & BIZ nos Sistemas Financei...
Transformando a experiência dos times de DEV, OPS & BIZ nos Sistemas Financei...
 
Introdução ao Sistema de Controle de Versão
Introdução ao Sistema de Controle de VersãoIntrodução ao Sistema de Controle de Versão
Introdução ao Sistema de Controle de Versão
 
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
 
QConSP: Vivenciando dev ops para além da automação de infraestrutura
QConSP: Vivenciando dev ops para além da automação de infraestruturaQConSP: Vivenciando dev ops para além da automação de infraestrutura
QConSP: Vivenciando dev ops para além da automação de infraestrutura
 
Alm open source
Alm open sourceAlm open source
Alm open source
 

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

Desenvolvimento organizado com VCS
Desenvolvimento organizado com VCSDesenvolvimento organizado com VCS
Desenvolvimento organizado com VCS
yogarine
 
Ruby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviçosRuby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviços
Bruno Ghisi
 
Planejamento de capacidade em ambiente virtualizado, por Bruno Domingues
Planejamento de capacidade em ambiente virtualizado, por Bruno DominguesPlanejamento de capacidade em ambiente virtualizado, por Bruno Domingues
Planejamento de capacidade em ambiente virtualizado, por Bruno Domingues
Joao Galdino Mello de Souza
 
Processo de desenvolvimento na samba
Processo de desenvolvimento na sambaProcesso de desenvolvimento na samba
Processo de desenvolvimento na samba
joaogmaciel
 
Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º dia
Armando Couto
 

Semelhante a Gerenciadores de Controle de Versão: Git, Mercurial e Bazaar (20)

Git workshop
Git workshopGit workshop
Git workshop
 
Desenvolvimento organizado com VCS
Desenvolvimento organizado com VCSDesenvolvimento organizado com VCS
Desenvolvimento organizado com VCS
 
Começando com Git
Começando com GitComeçando com Git
Começando com Git
 
Ferramenta git
Ferramenta gitFerramenta git
Ferramenta git
 
Oficina de Git EEDACT2015
Oficina de Git EEDACT2015Oficina de Git EEDACT2015
Oficina de Git EEDACT2015
 
Git 101
Git 101Git 101
Git 101
 
Escalando e otimizando sistemas legados
Escalando e otimizando sistemas legadosEscalando e otimizando sistemas legados
Escalando e otimizando sistemas legados
 
Git para quem vem do SVN
Git para quem vem do SVNGit para quem vem do SVN
Git para quem vem do SVN
 
Gerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHubGerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHub
 
Git that like a boss: UFRGS
Git that like a boss: UFRGSGit that like a boss: UFRGS
Git that like a boss: UFRGS
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 
Ruby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviçosRuby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviços
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Django no iis7
Django no iis7Django no iis7
Django no iis7
 
Planejamento de capacidade em ambiente virtualizado, por Bruno Domingues
Planejamento de capacidade em ambiente virtualizado, por Bruno DominguesPlanejamento de capacidade em ambiente virtualizado, por Bruno Domingues
Planejamento de capacidade em ambiente virtualizado, por Bruno Domingues
 
GIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento SemânticoGIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento Semântico
 
Apresentação Bazaar
Apresentação BazaarApresentação Bazaar
Apresentação Bazaar
 
Processo de desenvolvimento na samba
Processo de desenvolvimento na sambaProcesso de desenvolvimento na samba
Processo de desenvolvimento na samba
 
Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º dia
 

Último

Último (9)

Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

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

  • 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. 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. I – Conceitos básicos X http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/
  • 4. Histórico Centralizado 1990 2000 Distribuído 2005 16 Junho kernel 2.6.12
  • 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. Benefícios do Sistema Gerenciador de Controle de Versão (SCV) Manter histórico Colaboração Variações do projeto
  • 7. Arquitetura de um SCV Centralizado Adaptado de pronus.eng.br
  • 8. Operações básicas de um SCV Centralizado
  • 9. Operações básicas de um SCV Centralizado Cada commit cria uma nova revisão, números sequenciais
  • 10. Operações básicas de um SCV Centralizado
  • 11. Sincronização no SCV Centralizado Fonte: pronus.eng.br
  • 13. Arquitetura de um SCV Distribuído Fonte: pronus.eng.br
  • 14. Operações Básicas de um SCV Distribuído Fonte: pronus.eng.br
  • 15. Sincronização no SCV Distribuído Fonte: pronus.eng.br
  • 16. II - SCV Distribuídos
  • 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
  • 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. 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. 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. 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.
  • 26. 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
  • 27. Projetos que utilizam o Mercurial
  • 29. 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.
  • 30.
  • 31. 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
  • 34.
  • 35. III - Comparação vs http://en.wikipedia.org/wiki/Comparison_of_revision_control_software
  • 36. Git vs Hg vs Bzr: Velocidade http://pt.whygitisbetterthanx.com
  • 37. 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
  • 38. 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
  • 39. 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
  • 40. Git vs Hg vs Bzr – Implementação http://www.infoq.com/br/articles/dvcs-guide
  • 41. 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)