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

Post on 27-Jun-2015

4.340 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

X

Histórico

16 Junho kernel 2.6.12

2005

2000

1990

Centralizado

Distribuído

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

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

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.

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

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

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

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

Git vs Hg vs Bzr – Implementação

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

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?

top related