Upload
helio-medeiros
View
894
Download
60
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
@helmedeiros
--tudo-é-local
--distribuido-é-o-novo-centralizado--controle-de-versão-rápido
--fácil-merge
--fácil-branch
--seguro
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/
!=
Considerando a visão de LINUS TORVALDS
“controle de versão do jeito que
ele realmente deveria ser”
“cvs ou baseado em suas
primitivas?”
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!
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/
#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
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/
#2Git é rápido. Com o Git, quase todas as operações são realizadas localmente, dando-lhe uma vantagem enorme
PEQUENO E 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
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
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
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
#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
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/
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/
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
{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.
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
#4É impossível obter qualquer coisa dentro do Git além dos bits exatos que você colocar
GARANTIA DE INTEGRIDADE
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/
#5Coomits podem ser formatados e revisados ������antes de completar a submissão.
ÁREA DE CONFERÊNCIA
Á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/
#6Use o Git em projetos abertos ou proprietários de graça, para sempre.
GRATUITO
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/
#7Baixe, inspecionar e modificar o código-fonte do Git.
CÓDIGO ABERTO
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;
Obrigado!@helmedeiros
Fontes:Pro Git - Scott Chacon
Imagens:http://git-scm.com/