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/
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
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
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
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)