git - controle de versão inteligente

39
Controle de Versão Inteligente por Adriano Rocha

Upload: adriano-rocha

Post on 27-Jun-2015

291 views

Category:

Technology


2 download

DESCRIPTION

Palestra apresentada no TechDay 2013 em Tubarão, sobre git.

TRANSCRIPT

Page 1: Git - Controle de Versão Inteligente

Controle de Versão Inteligente

por Adriano Rocha

Page 2: Git - Controle de Versão Inteligente

O que é Controle de Versão?

• É a forma inteligente de manter uma copia segura dos arquivos de um projeto.

• Permite que você altere um arquivo e, se fizer algo de errado, volte atras.

• Guarda as informações de quem fez ou desfez uma funcionalidade.

Page 3: Git - Controle de Versão Inteligente

…ou seja…Se você fizer algo de errado…

…saberemos que foi você!

Page 4: Git - Controle de Versão Inteligente

Controle de VersãoLocal• Primeiro utilizava-se de copiar arquivos em pastas.

Page 5: Git - Controle de Versão Inteligente

Controle de VersãoLocal

• Depois foi criada uma estratégia de guardar as mudanças em banco de dados

• RCS foi a ferramenta de controle de versão mais conhecida no mundo, no entanto ela trabalhava apenas com arquivos individuais e não com grupo de arquivos (projetos)

Page 6: Git - Controle de Versão Inteligente

Sistema de Controle de Versão Centralizado

As versões dos arquivos são

armazenadas em um servidor

Os usuários copiam esses arquivos,

alteram e mandam novamente para o

servidor, bem como copiam as alterações

de outros usuários

Page 7: Git - Controle de Versão Inteligente

Sistema de Controle de Versão Centralizado

Desvantagens

• Os arquivos estão centralizados no servidor.

• É necessário estar conectado a rede do servidor para efetuar o “commit” das suas alterações

• Se você estiver fora da rede os arquivos não estão mais sobre o controle de versão

Page 8: Git - Controle de Versão Inteligente

Sistema de Controle de Versão DistribuídoQuando você conecta ao repositório você adquire

uma copia completa, com todas as revisões dos

arquivos

Você pode conectar o seu repositório com o de outros usuários e trocar arquivos sem perder o histórico

principal

Page 9: Git - Controle de Versão Inteligente

Sistema de Controle de Versão Distribuído

Page 10: Git - Controle de Versão Inteligente
Page 11: Git - Controle de Versão Inteligente

Sobre o Git

• Inicialmente projetado e desenvolvido por Linus Torvalds e o time de desenvolvimento do Kernel do Linux

• Ênfase em velocidade

• Ótimo suporte para desenvolvimento não linear

• Totalmente distribuído

• Gratuito • Open

Source

Page 12: Git - Controle de Versão Inteligente

Snapshots e não diferenças

CVS, SVN,…

Git

Page 13: Git - Controle de Versão Inteligente

Operações Locais

Git possui propriedades abençoadas se comparado ao

SVN e ao CVS.

Todas as operações com o repositório são

praticamente instantâneas, desde

consulta de histórico até commit.

Page 14: Git - Controle de Versão Inteligente

Integridade de Arquivos

Antes de efetivar suas alterações é feita uma

validação com checksum

Impossível alterar um arquivo sem que o Git saiba

Mecanismo de checksum SHA-1

Mescla de alterações quase transparente ao usuário

Page 15: Git - Controle de Versão Inteligente

…só adição de dados!

Diferente do SVN e do CVS, o Git não guarda só as diferenças

do seu arquivo mas sim uma imagem completa dele

Você tem que ser praticamente um Jedi Sayajin para conseguir fazer algo que de

errado e seja irreversível…

…ou não ter a menor idéia do que esta fazendo!

Page 16: Git - Controle de Versão Inteligente

Codificou e mandou pro repositório?

Pode tomar seu café em paz!

Commit, push? Hell yeah!

Page 17: Git - Controle de Versão Inteligente

Com Git

Com Git todo o trabalho é local, os commits são sempre feitos no seu repositório local e depois, através do método push envia todos os seus snapshots para um servidor que se responsabiliza de organiza-los.

Com SVN, CVS

Todo histórico de alterações são armazenadas no servidor tornando necessário estar conectado para disponibilizar suas alterações para o Sistema de Controle de Versão

Page 18: Git - Controle de Versão Inteligente

Aí eu te pergunto…

Page 19: Git - Controle de Versão Inteligente

E se a energia do prédio aonde você trabalha

caisse e voltasse somente depois de 1

semana?!

Page 20: Git - Controle de Versão Inteligente

Vamos para um exemplo rápido e prático

Page 21: Git - Controle de Versão Inteligente

Você vai viajar pra Sydney e vai passar algumas horas sem fazer nada (aproximadamente 20 horas)…

Page 22: Git - Controle de Versão Inteligente

Então você tem decide que quer aproveitar bem todo esse tempo pra trabalhar em um projeto

Page 23: Git - Controle de Versão Inteligente

Você então pega seu notebook e codifica ate sair fumaça do teclado, alterando vários arquivos e adicionando um monte de funcionalidades ao seu projeto…

Com SVN, CVS…

Page 24: Git - Controle de Versão Inteligente

Com SVN, CVS…

Quando você finalmente chega no Hotel você conecta seu notebook na internet e faz um commit e manda tudo pro servidor.

Page 25: Git - Controle de Versão Inteligente

Com SVN, CVS…

…daí então o seu colega de trabalho liga e fala que você foi o responsável por “quebrar a build” do projeto que estava prestes a ser entregue pro cliente.

Page 26: Git - Controle de Versão Inteligente

Com SVN, CVS…

Então você se desespera pois você mexeu em vários arquivos e adicionou outros vários arquivos e também não consegue ir voltando nas versões pois, teoricamente, só existem 2 versões: antes do seu commit e depois do seu commit (e todas aquelas horas no vôo se resumem a um commit apenas)

Page 27: Git - Controle de Versão Inteligente

Com SVN, CVS…

Page 28: Git - Controle de Versão Inteligente

Você pega seu notebook e começa a codificar, com a mesma intensidade, porém com vários commits, branchs para teste, tags para versão, etc…

Com Git

Page 29: Git - Controle de Versão Inteligente

Com Git

Quando você finalmente chega no Hotel você conecta seu notebook na internet e faz o push dos seus commits para o servidor da empresa…

Page 30: Git - Controle de Versão Inteligente

Com Git

…daí então o seu colega de trabalho liga e fala que você foi o responsável por “quebrar a build” do projeto que estava prestes a ser entregue pro cliente.

Page 31: Git - Controle de Versão Inteligente

Com Git

Como você usou Git você pode navegar entre as versões que foram criadas dos arquivos, ver quando foram adicionados no repositório e assim, pode achar o problema com mais facilidade.

Page 32: Git - Controle de Versão Inteligente

Com Git

Page 33: Git - Controle de Versão Inteligente

Explosão Git

Mas por que somente agora tantas empresas, start-ups, profissionais e projetos open source estão adotando o Git com o Sistema de Controle de

Versão de seus projetos?

Page 34: Git - Controle de Versão Inteligente
Page 35: Git - Controle de Versão Inteligente

O que é 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.

Page 36: Git - Controle de Versão Inteligente

Ai alguém vira e pergunta..

Que empresa em sua sã consciência entregaria o código fonte dos seus programas para terceiros?

Page 37: Git - Controle de Versão Inteligente

Bem…

Page 38: Git - Controle de Versão Inteligente

Perguntas?!

Page 39: Git - Controle de Versão Inteligente

Obrigado

Adriano Luís Rocha

Email: [email protected]

Linked In: http://www.linkedin.com/in/adrianoluis

GitHub: http://github.com/adrianoluis