28
@helmedeiros --tudo-é-local --distribuido-é-o-novo-centralizado --controle-de-versão-rápido --fácil-merge --fácil-branch --seguro

git --controle-de-versão-rápido

Embed Size (px)

DESCRIPTION

Apresentação sobre git realizada no HotSpot do grupo RBS, para posicionamento e comparativo com a ferramenta de controle de versão SVN. Na apresentação são demonstrados, pontos fortes da ferramenta em 7 dimensões: 1.Facilidade de branching e merging; 2.Tamanho e rapidez; 3.Distribuido; 4.Garantia de integridade; 5.Staging Area; 6.Gratuito; 7.Código aberto;

Citation preview

Page 1: git --controle-de-versão-rápido

@helmedeiros

--tudo-é-local

--distribuido-é-o-novo-centralizado--controle-de-versão-rápido

--fácil-merge

--fácil-branch

--seguro

Page 2: git --controle-de-versão-rápido

Git é sistema de controle de versão distribuído livre e de código aberto, projetado para lidar com

tudo, de pequenos a grandes projetos, com velocidade e eficiência.

http://git-scm.com/

Page 3: git --controle-de-versão-rápido

!=

Page 4: git --controle-de-versão-rápido

Considerando a visão de LINUS TORVALDS

“controle de versão do jeito que

ele realmente deveria ser”

“cvs ou baseado em suas

primitivas?”

Page 5: git --controle-de-versão-rápido

TALVEZ, NÃO SEJA UM BOM PONTO DE PARTIDA... BLASFEMAR SOBRE OS SISTEMAS DE CONTROLE DE VERSÃO

USADOS... MAS... HUMMM...

PRECISAMOS IR EM FRENTE!

Page 6: git --controle-de-versão-rápido

Quais são as vantagens?

pequeno e rápido

branching e merging distribuido garantia de

integridade

área de conferência gratuito código aberto

http://git-scm.com/

Page 7: git --controle-de-versão-rápido

#1Git permite e incentiva a criação de vários branchs locais, que podem ser totalmente independentes um do outro.

BRANCHING E MERGING

prod

SIM usando trunk?

SIM

NÃOTAG?

NÃO cria tag

trunk

restaura

trunk

tag

cria branch

trunk

avisou?dev

homolok?

reintegrate

trunk

branch

cria tag

trunk

local

Page 8: git --controle-de-versão-rápido

BRANCHING E MERGINGAlternância de contexto sem atrito

Criar um branch para testar uma idéia, comitar algumas vezes, voltar para onde você iniciou, aplicar um patch, voltar para onde você estava experimentando, e mesclá-los!

Linhas de versionamento especifica Ter uma linha de versionamento que sempre contém apenas o que vai para a produção, outra que você mescle para testes,

e várias outras menores para o dia a dia de trabalho.

Workflow baseado em funcionalidadesCriar um novo branch para cada nova funcionalidade que vai trabalhar, para que você possa facilmente alternar entre eles,

em seguida, exclua cada linha de versionamento quando essa funcionalidade for incorporada a sua linha principal.

Experimentação descartávelCriar um branch para experimentar, perceber que não resolverá o problema, e apenas excluí-lo - abandonar o trabalho sem

que ninguém tenha o visto.http://git-scm.com/

Page 9: git --controle-de-versão-rápido

#2Git é rápido. Com o Git, quase todas as operações são realizadas localmente, dando-lhe uma vantagem enorme

PEQUENO E RÁPIDO

Page 10: git --controle-de-versão-rápido

PEQUENO E RÁPIDOCommit Arquivos(A)

Add, commit e push 113 arquivos modificados

00.751.52.253

git svn

2.6

0.64

Commit Imagens(B)Add, commit e push de 1000 imagens de

1Kb

07.51522.530

git svn

24.7

1.53

Diff LocalDiff de 187 arquivos alterados locais

contra o último commit.

00.2750.550.8251.1

git svn

1.09

0.25

Diff ArquivosDiff entre versão atual e outra 4 commits

atrás (269 alterados)

01234

git svn

3.99

0.25

Diff TagsDiff entre duas tags (v1.9.1.0/v1.9.3.0 )

022.54567.590

git svn

83.57

1.17

http://git-scm.com/

UpdatePull do cenário do Commit A

(113 arquivos alterados)

00.751.52.253

git svn

2.82

0.9

Page 11: git --controle-de-versão-rápido

PEQUENO E RÁPIDOLog (Todos)

Log de todos os commits (26.056 commits)

050100150200

git svn

169.2

0.52

Log (50)Log dos últimos 50 commits

00.10.20.30.4

git svn

0.38

0.01

BlameAnotações em um único arquivo (array.c)

01234

git svn

3.04

1.91

http://git-scm.com/

Log (Arquivo)Log do histórico de um arquivo (array.c -

483 revissões)

022.54567.590

git svn

82.84

0.6

Page 12: git --controle-de-versão-rápido

PEQUENO E RÁPIDOCommit Arquivos(A)

Add, commit e push 113 arquivos modificados

00.751.52.253

git svn

2.6

0.64

Commit Imagens(B)Add, commit e push de 1000 imagens de

1Kb

07.51522.530

git svn

24.7

1.53

Diff LocalDiff de 187 arquivos alterados locais

contra o último commit.

00.2750.550.8251.1

git svn

1.09

0.25

Diff ArquivosDiff entre versão atual e outra 4 commits

atrás (269 alterados)

01234

git svn

3.99

0.25

Diff TagsDiff entre duas tags (v1.9.1.0/v1.9.3.0 )

022.54567.590

git svn

83.57

1.17

http://git-scm.com/

UpdatePull do cenário do Commit A

(113 arquivos alterados)

00.751.52.253

git svn

2.82

0.9

O GIT É MAIS RÁPIDO QUE O SVN

4x 16x 4x

16x 71x 3x

Page 13: git --controle-de-versão-rápido

PEQUENO E RÁPIDOLog (Todos)

Log de todos os commits (26.056 commits)

050100150200

git svn

169.2

0.52

Log (50)Log dos últimos 50 commits

00.10.20.30.4

git svn

0.38

0.01

BlameAnotações em um único arquivo (array.c)

01234

git svn

3.04

1.91

http://git-scm.com/

Log (Arquivo)Log do histórico de um arquivo (array.c -

483 revissões)

022.54567.590

git svn

82.84

0.6

O GIT É MAIS RÁPIDO QUE O SVN

325x 31x 138x

1x

Page 14: git --controle-de-versão-rápido

#3Em vez de fazer um "check-out" da situação atual do código fonte, você faz um "clone" de todo o repositório.

DISTRIBUIDO

Page 15: git --controle-de-versão-rápido

DISTRIBUÍDO

Qualquer Fluxo de trabalhoPor causa da natureza distribuída e do sistema de ramificação do Git, um número quase infinito de fluxos de trabalho pode ser implementado

com relativa facilidade.

Backups MúltiplosMesmo se você estiver usando um fluxo de trabalho centralizado, cada usuário terá um backup completo do servidor principal. Cada uma dessas cópias pode substituir o servidor principal em caso de

um acidente ou de corrupção. Como efeito, não há um ponto único de falha com Git a menos que haja apenas uma única cópia do

repositório.http://git-scm.com/

Page 16: git --controle-de-versão-rápido

DISTRIBUÍDO

Fluxo de trabalho ao estilo Subversion

Um fluxo de trabalho centralizado é muito comum, especialmente de pessoas

transitando de um sistema centralizado.

http://git-scm.com/

Page 17: git --controle-de-versão-rápido

DISTRIBUÍDO

Fluxo de trabalho distribuido e descentralizado

Para equipes que se sobrepõem a uma estrutura formal de times, o modelo distribuído permite uma organização colaborativa simples e organizada.

http://git-scm.com/

origem

origem

PROJETO OPEN SOURCE 1

origem

origem

PROJETO OPEN SOURCE 2

Page 18: git --controle-de-versão-rápido

{DISTRIBUÍDO

http://git-scm.com/

fetch

merge

+origin/master

master

origem

localhost

PULLO comando pull realiza as duas operações, realiza primeiro um fetch trazendo todos os arquivos e em

seguida realiza um merge com o seu repositório local.

Page 19: git --controle-de-versão-rápido

DISTRIBUÍDO

http://git-scm.com/

pushorigem

localhost

PUSHO comando push realiza o envio do pacote de

informações do repositório local para o seu par no servidor desejado. Mesmo que o repositório não

exista no servidor em questão.

push notebook

$git push origem projeto1

$git push notebook projeto1

Page 20: git --controle-de-versão-rápido

#4É impossível obter qualquer coisa dentro do Git além dos bits exatos que você colocar

GARANTIA DE INTEGRIDADE

Page 21: git --controle-de-versão-rápido

GARANTIA DE INTEGRIDADE

Integridade CriptográficaO modelo de dados que o Git usa garante a integridade criptográfica de todos os bits de

seu projeto. Sobre cada arquivo e commit é gerado um checksum e sempre que se for recuperar e realizada a conferencia. É impossível obter qualquer coisa fora do Git além dos

bits exatos você colocar dentro.

http://git-scm.com/

Page 22: git --controle-de-versão-rápido

#5Coomits podem ser formatados e revisados ������antes de completar a submissão.

ÁREA DE CONFERÊNCIA

Page 23: git --controle-de-versão-rápido

ÁREA DE CONFERÊNCIA

Staging AreaGit tem algo chamado de "staging area" ou "índice", que serve como área intermediária onde

os commits podem ser formatados e revisados ������antes de completar a submissão. Desta forma é possível rapidamente alterar alguns de seus arquivos e comitá-los sem comitar

todos os outros modificados em seu diretório de trabalho, ou ainda ter que listá-los durante a confirmação.

http://git-scm.com/

Page 24: git --controle-de-versão-rápido

#6Use o Git em projetos abertos ou proprietários de graça, para sempre.

GRATUITO

Page 25: git --controle-de-versão-rápido

GRATUITO

Sob licença de software livre GPLv2 é possívelUsar o Git em projetos abertos ou proprietário de graça, para sempre;

Utilizar os binários do Git em programas abertos ou proprietários;

http://git-scm.com/

Page 26: git --controle-de-versão-rápido

#7Baixe, inspecionar e modificar o código-fonte do Git.

CÓDIGO ABERTO

Page 27: git --controle-de-versão-rápido

CÓDIGO ABERTO

http://git-scm.com/

Sob licença de software livre GPLv2 é possívelBaixar, inspecionar e modificar o código-fonte do Git;

Fazer alterações proprietárias no Git que você não redistribua publicamente;redistribuir publicamente binários do Git com programas abertos ou proprietários

desde que os mesmo sejam públicos;

Page 28: git --controle-de-versão-rápido

Obrigado!@helmedeiros

Fontes:Pro Git - Scott Chacon

Imagens:http://git-scm.com/