Go GIT
Controle de Versão Distribuido




                                 By @_marcospaulo_
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.
Ou seja...
Se você esculhambar as coisas ou perder arquivos,
       facilmente podemos recuperá-los.....



                       e...



         Nó saberemos que foi você!!!!
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
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.
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.
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.
Visão de Repositórios
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
Snapshots e não diferenças
                  CVS, SVN...




 GIT
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.
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.
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.
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...
Ai eu te pergunto
O QUE ACONTECERIA
 SE TODA A REDE DA
   NAVITA CAÍSSE
     AGORA E SÓ
VOLTASSE AMANHÃ?
Vamos entender o quanto esse problema
é grave com um exemplo prático e rápido
Exemplo prático e rápido


Você vai viajar pras Filipinas e ficará horas no
    avião morgando sem nada pra fazer.
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.
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.
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.
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
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
Exemplo prático e rápido

• Com SVN
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...
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.
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
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
Exemplo prático e rápido

• Com o GIT



                  Você Owna!!!!!
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?
GitHub is the best way to
collaborate with others. Fork,
send pull requests and manage
all your public and private git
repositories.
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.
Mas qual empresa séria de
verdade seria louca de entregar
seus códigos fontes na mão de
    servidor de terceiros?
Aqui vai algumas...
Let`s Take A Look At
       GitHub
Perguntas??
Obrigado a todos




                Até a próxima
github.com/marcospaulo          By @_marcospaulo_

Go git - Presentation @Navita

  • 1.
    Go GIT Controle deVersão Distribuido By @_marcospaulo_
  • 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ãolocal 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 Controlede 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 Controlede 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 ControleDe 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.
  • 8.
  • 10.
    Pequena História doGIT • 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
  • 11.
    Snapshots e nãodiferenças CVS, SVN... GIT
  • 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 adicionadados • 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...
  • 16.
    Ai eu tepergunto
  • 17.
    O QUE ACONTECERIA SE TODA A REDE DA NAVITA CAÍSSE AGORA E SÓ VOLTASSE AMANHÃ?
  • 18.
    Vamos entender oquanto esse problema é grave com um exemplo prático e rápido
  • 19.
    Exemplo prático erápido Você vai viajar pras Filipinas e ficará horas no avião morgando sem nada pra fazer.
  • 20.
    Exemplo prático erá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 erá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 erá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 erá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 erá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
  • 25.
    Exemplo prático erápido • Com SVN
  • 26.
    Exemplo prático erá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 erá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 erá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 erá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
  • 30.
    Exemplo prático erápido • Com o GIT Você Owna!!!!!
  • 31.
    Ascensão do GIT Maso 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 thebest 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 empresaséria de verdade seria louca de entregar seus códigos fontes na mão de servidor de terceiros?
  • 35.
  • 36.
    Let`s Take ALook At GitHub
  • 37.
  • 38.
    Obrigado a todos Até a próxima github.com/marcospaulo By @_marcospaulo_