gerenciadores de controle de versão: git, mercurial e bazaar

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

Upload: ivanilton-polato

Post on 27-Jun-2015

4.340 views

Category:

Technology


0 download

DESCRIPTION

Apresentação apresentado e comparando os três controladores de versão: Git, Bazaar e Mercurial.

TRANSCRIPT

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

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)

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

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

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

I – Conceitos básicos

http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/

X

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

Histórico

16 Junho kernel 2.6.12

2005

2000

1990

Centralizado

Distribuído

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

Benefícios do Sistema Gerenciador de Controle de Versão (SCV)

Manter histórico Colaboração

Variações do projeto

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

Arquitetura de um SCV Centralizado

Adaptado de pronus.eng.br

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

Operações básicas de um SCV Centralizado

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

Operações básicas de um SCV Centralizado

Cada commit cria uma nova revisão, números sequenciais

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

Operações básicas de um SCV Centralizado

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

Sincronização no SCV Centralizado

Fonte: pronus.eng.br

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

Problemas SCV centralizado

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

Arquitetura de um SCV Distribuído

Fonte: pronus.eng.br

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

Operações Básicas de um SCV Distribuído

Fonte: pronus.eng.br

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

Sincronização no SCV Distribuído

Fonte: pronus.eng.br

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

II - SCV Distribuídos

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

Linus Torvalds Criador

Junio Hamano 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

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

Projetos que utilizam o Git

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

Hospedagem

repo.or.cz

Savannah

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

Workflow Básico

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

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

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

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.

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

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

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

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.

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

Matt Mackall 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

Release 1 janeiro

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

Projetos que utilizam o Mercurial

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

Hospedagem

Savannah

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

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.

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

Projetos que utilizam o Bazaar

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

Hospedagem

Savannah

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

III - Comparação

vs

http://en.wikipedia.org/wiki/Comparison_of_revision_control_software

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

Git vs Hg vs Bzr: Velocidade

http://pt.whygitisbetterthanx.com

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

Git vs Hg vs Bzr: Velocidade

0,000

0,050

0,100

0,150

0,200

git bzr hg

init

0,000

0,200

0,400

0,600

0,800

git bzr hg

add (1 arq.)

0,000

1,000

2,000

3,000

git bzr hg

add (2000 arq.)

0,000

0,500

1,000

git bzr hg

diff

0,000

5,000

10,000

git bzr hg

status (1 arq.)

0,000

0,200

0,400

0,600

0,800

git bzr hg

status (2000 arq.)

0,000

0,050

0,100

0,150

git bzr hg

tag

0,000

2,000

4,000

6,000

git bzr hg

log

0,000

0,500

1,000

1,500

git bzr hg

commit (1 arq.)

0,000

2,000

4,000

6,000

git bzr hg

commit (2000 arq.)

0,000

0,200

0,400

0,600

0,800

git bzr hg

branch (frio)

0,000

0,050

0,100

0,150

git bzr hg

branch(quente)

Testes realizados por Igor F. Steimacher, Igor S. Wiese e Ivanilton Polato em 01/02/2012

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

Git vs Hg vs Bzr: Tamanho do Repositório

http://pt.whygitisbetterthanx.com

Bzr* depois de rodar o Bzr pack

Git vs Hg vs Bzr: Tempo de Clone

SVN compardo com o checkout

http://pt.whygitisbetterthanx.com

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

Git vs Hg vs Bzr: Tamanho do Repositório e Tempo de Clone

0

50000

100000

150000

200000

250000

git bzr hg

tamanho

Testes realizados por Igor F. Steimacher, Igor S. Wiese e Ivanilton Polato em 01/02/2012

0,000

10,000

20,000

30,000

40,000

50,000

60,000

70,000

git bzr hg

clone local

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

Git vs Hg vs Bzr – Implementação

http://www.infoq.com/br/articles/dvcs-guide

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

By Igor Wiese, Igor Steinmacher, Ivanilton Polato. These slides are licensed under the

Attibution-ShareAlike 3.0 Brasil License (CC BY-SA 3.0)

Dúvidas?