Download - Git - Controle de Versão Inteligente
Controle de Versão Inteligente
por Adriano Rocha
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.
…ou seja…Se você fizer algo de errado…
…saberemos que foi você!
Controle de VersãoLocal• Primeiro utilizava-se de copiar arquivos em pastas.
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)
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
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
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
Sistema de Controle de Versão Distribuído
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
Snapshots e não diferenças
CVS, SVN,…
Git
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.
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
…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!
Codificou e mandou pro repositório?
Pode tomar seu café em paz!
Commit, push? Hell yeah!
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
Aí eu te pergunto…
E se a energia do prédio aonde você trabalha
caisse e voltasse somente depois de 1
semana?!
Vamos para um exemplo rápido e prático
Você vai viajar pra Sydney e vai passar algumas horas sem fazer nada (aproximadamente 20 horas)…
Então você tem decide que quer aproveitar bem todo esse tempo pra trabalhar em um projeto
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…
Com SVN, CVS…
Quando você finalmente chega no Hotel você conecta seu notebook na internet e faz um commit e manda tudo pro servidor.
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.
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)
Com SVN, CVS…
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
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…
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.
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.
Com Git
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?
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.
Ai alguém vira e pergunta..
Que empresa em sua sã consciência entregaria o código fonte dos seus programas para terceiros?
Bem…
Perguntas?!
Obrigado
Adriano Luís Rocha
Email: [email protected]
Linked In: http://www.linkedin.com/in/adrianoluis
GitHub: http://github.com/adrianoluis