O documento discute o controle de versão distribuído usando o Git. Explica que o Git permite trabalhar localmente e sincronizar com um repositório remoto, ao contrário de sistemas centralizados onde as modificações só podem ser feitas após o upload. Também destaca como o GitHub popularizou o Git ao fornecer hospedagem gratuita de projetos e funcionalidades sociais que facilitam a colaboração.
2. O que é controle de versão?
- Guarda as mudanças de
arquivos em versões para
que você possa recuperá-
los depois.
- Guarda informações de quem fez as
modificações, faz comparações de versões
modificadas.
3. Ou seja...
Se você esculhambar as coisas ou perder arquivos,
facilmente podemos recuperá-los.....
e...
Nó saberemos que foi você!!!!
4. Controle de Versão local
Método de controle era
copiar arquivos em pastas
Depois foi criada uma
estratégia de salvar as
mudanças em banco de dados
Rcs foi o VCS tools mais
conhecida e inclusive ainda
hoje vem junto com MacOS
5. Sistemas De Controle de
Versão Centralizado
Apenas um servidor
que contém os
arquivos versionados.
Vários clientes baixam
esses arquivos e depois
enviam eles modificados
e baixam modificações
dos outros e assim
sucetivamente.
6. Sistemas De Controle de
Versão Centralizado
- Desvantagens
Arquivos centralizados em um único servidor .
Se a rede cair ninguém mais pode comitar e os
arquivos não estarão mais sob controle de
versão.
7. Sistemas De Controle De
Versão Distribuidos.
Computadores que baixam os
projetos não pegam apenas a
última versão dos arquivos, mas
sim ele espelha todo o repositório.
Posso trabalhar simultaneamente em
repositórios diferentes com grupos
diferentes e depois juntar ao repositório
final mantendo todo histórico.
10. Pequena História do GIT
• Criado inicialmente para manter o código do kernel do
linux.
• Criado por Linus Torvalds, o criador do Linux, e a sua
comunidade de desenvolvimento.
Feito pra ser:
- Rápido
- Suporte muito bom para desenvolvimento não linear.
- Totalmente distribuido
12. Quase todas as
operações são locais
• Se você comparar com SVN,
CVS, perceberá que os deuses
abençoaram o Git com poderes
inexpressáveis
• Todo seu histórico do projeto
estará no seu disco local, quase
todas as operações pareceram
instantâneas.
13. Git tem integridade
• Antes de salvar os arquivos ele faz uma validação através
de checksum.
• Impossível modificar um arquivo
sem que o GIT saiba.
• Mecanismo de checksum
chamado de SHA-1 hash.
14. GIT apenas adiciona dados
• Suas ações no git, praticamente todas só adicionam
dados ao banco de dados do Git.
• Você tem que ser muito fera
pra conseguir fazer algo no
sistema que não possa ser
desfeito ou que faça apagar
dados.
• Documento commitado e
pushado é documento
praticamente imperdível.
15. Com o GIT....
• O Git você praticamente trabalha local, faz seus
commits no seu database local e depois manda um
push pro servidor enviando todo teu snapshot e
ele se responsabiliza por organizar as snapshots.
Com o SVN, CVS....
• Já aqui você modifica e commita pro servidor
guardar tua mudança, commita e joga pro servidor
guardar a mudança, não há como commitar local e
depois só salvar pro servidor...
17. O QUE ACONTECERIA
SE TODA A REDE DA
NAVITA CAÍSSE
AGORA E SÓ
VOLTASSE AMANHÃ?
18. Vamos entender o quanto esse problema
é grave com um exemplo prático e rápido
19. Exemplo prático e rápido
Você vai viajar pras Filipinas e ficará horas no
avião morgando sem nada pra fazer.
20. Exemplo prático e rápido
Mas ai você tem a brilhante ideia de se divertir
no avião programando no seu notebook
naquele seu projeto lá do trabalho que tá irado.
21. Exemplo prático e rápido
• Com SVN
Você programa, programa, programa, programa a
viagem toda... cria uma funcionalidade nova legal
pra caramba mas meche em vários arquivos.
22. Exemplo prático e rápido
• Com SVN
Quando você chega no hotel então você
commita tudo lá pro servidor, porque você agora
tá com internet e pode acessá-lo.
23. Exemplo prático e rápido
• Com SVN
Ai o seu amigo Astronildo do trabalho liga pra
você e diz que seu último commit bugou toda uma
funcionalidade que já estava pronta a muito tempo
24. Exemplo prático e rápido
• Com SVN
Mas você fez muitas modificações, não tem ideia
de onde você esculhambou a aplicação, e você não
pode ficar voltando versões porque durante o voo
você não fez nenhum commit, daí só existe duas
versões... a de antes do voo e a de depois
26. Exemplo prático e rápido
• Com o GIT
Você programa, commita, programa, commita,
programa, commita a viagem toda... cria uma
funcionalidade nova legal pra caramba e vai
criando branches lógicos pros testes e tudo
mais.... e commita... e programa...
27. Exemplo prático e rápido
• Com o GIT
Quando você chega no hotel então você faz um
push de todos os snapshots e históricos pro
servidor, porque você agora tá com internet e
pode acessá-lo.
28. Exemplo prático e rápido
• Com o GIT
Ai o seu amigo Astronildo do trabalho liga pra
você e diz que seu último push bugou toda uma
funcionalidade que já estava pronta a muito tempo
29. Exemplo prático e rápido
• Com o GIT
Mas você usou o GIT, todas as mudanças que você
fez foram versionadas, você pode ficar
recuperando etapas de mudanças do voo até a
funcionalidade voltar a funcionar... e assim você
nao perde todo o trabalho... ou mesmo não perde
trabalho nenhum
31. Ascensão do GIT
Mas o que fez o GIT estourar e ser tão usado
hoje por várias start-ups, grandes empresas,
vários profissionais, por vários projetos open
sources e o que fez ele ganhar tanto destaque
nos últimos anos?
32. GitHub is the best way to
collaborate with others. Fork,
send pull requests and manage
all your public and private git
repositories.
33. O que é o github?
• Servidor de repositórios
• Rede Social
• Gerenciador de projetos em questões
técnicas.
• Wikis, Code Review, Gráficos, Issue Tracker
e muito mais.
34. Mas qual empresa séria de
verdade seria louca de entregar
seus códigos fontes na mão de
servidor de terceiros?