SVN: Controle de revisões com
             subversion
          Thiago Rafael Becker
          thiago.becker@gmail




   ...
Histórico

    ●   CollabNet, Inc. (http://www.collab.net),
        Fev. 2000
        –   SourceCast (software de colabora...
Controle de revisão

    ●   Conceitos
        –   Repositório (localização central dos dados
            versionados)
   ...
Repositório

    ●   Local central aonde são guardados os
        arquivos do projeto
    ●   Funciona como um sistema de ...
Repositório

    ●   No começo, sistemas de arquivos
        –   Problema?




                                     
Repositório

    ●   Problemas?
        –   Uma vez escrito, não existe maneira de
            voltar atrás
        –   Po...
Repositório

    ●   Solução: Controle automático de
        (versionamento)
        –   Controle automático da revisão, d...
CVS

    ●   Concurrent Versions System
    ●   Problemas?
        –   Impossibilidade de renomear arquivos e
            ...
CVS

    ●   Problemas?
        –   O versionamento de arquivos apresenta
            problemas
             ●   Problema ...
Subversion!

    ●   Versionamento de arquivos, diretórios, e
        metadados do repositório
    ●   Operações de cópia ...
Subversion

    ●   Versionamento por módulo
    ●   Commits atômicos
    ●   Versionamento por módulo, não por
        ar...
Arquitetura




               
Pradigmas de controle de
revisão

    ●   Lock-modify-unlock
        –   Problemas administrativos
        –   Serializaçã...
Revisões

    ●   São números aplicados a um objeto para
        identificar a versão única do objeto
    ●   CVS
        ...
Revisões

    ●   SVN
        –   Números de revisão são globais dentro do 
            repositório
        –   Identifica...
Ciclo de Trabalho

    ●   “Checkout” de uma cópia de trabalho
    ●   Atualizar uma cópia de trabalho
    ●   Fazer alter...
Ciclo da trabalho

    ●   “Checkout” de uma cópia de trabalho
        svn checkout file:///home/trbecker/UFRGS

    ●   A...
Ciclo de trabalho

    ●   Fazer alterações (por conta do desenvolver)
    ●   Examinar suas alterações
        svn status...
Ciclo de trabalho

    ●   Examinar suas alterações
        svn diff [­r revision:revision] [arquivo]

        –   Exibe a...
Ciclo de trabalho

    ●   Causadores de conflitos são postos em um
        arquivo, como em CVS
    ●   Três arquivos com...
Resolução de conflitos

    ●   Mesclar manualmente os arquivos
        (inflizmente nem tudo funciona como
        gostar...
Mensagens de log

    ●   Ao cometer novas revisões ao svn, é
        possível adicionar mensagens de log
    ●   Na verda...
Branching

    ●   Branch: cópia do repositório para edição
        paralela
    ●   Tags == branches
    ●   Dois modos d...
Branching

    ●   Mesclagem
        –   svn merge – mescla árvores
        –   Mesmos dois modos de operação: servidor ou...
Perguntas?



                  
Agradecimentos :)




                         
Próximos SlideShares
Carregando em…5
×

SVN: Controle de revisões com subversion - Thiago Rafael Becker

4.735 visualizações

Publicada em

Publicada em: Tecnologia, Turismo
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
4.735
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
54
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

SVN: Controle de revisões com subversion - Thiago Rafael Becker

  1. 1. SVN: Controle de revisões com subversion Thiago Rafael Becker thiago.becker@gmail    
  2. 2. Histórico ● CollabNet, Inc. (http://www.collab.net), Fev. 2000 – SourceCast (software de colaboração) ● Desenvolvedores: Karl Fogel, Jim Blandy, Ben Collins-Sussman ● Auxiliaram: Greg Stein, Brian Benlendorf, Jason Robbins ● “Auto-contido” em Ago. 2001    
  3. 3. Controle de revisão ● Conceitos – Repositório (localização central dos dados versionados) – Revisão (situação do repositório em um instante do tempo) – Histórico (conjunto de versões) – Módulo (parte de um repositório)    
  4. 4. Repositório ● Local central aonde são guardados os arquivos do projeto ● Funciona como um sistema de arquivos distribuído ● Mantém histórico de alterações, é possível consultar qualquer momento deste histórico ● Gravação = commit, leitura = checkout    
  5. 5. Repositório ● No começo, sistemas de arquivos – Problema?    
  6. 6. Repositório ● Problemas? – Uma vez escrito, não existe maneira de voltar atrás – Pode ser feito controle manual da revisão, mas é trabalhoso – Pode ser feito um controle do histórico de cada revisão, mas também é complicado – Muitas ações antes de gravar um arquivo desviam a atenção do desenvolvedor    
  7. 7. Repositório ● Solução: Controle automático de (versionamento) – Controle automático da revisão, do histórico, possibilidade de consultar um projeto em qualquer momento de seu desenvolvimento ● Solução mais conhecida: CVS    
  8. 8. CVS ● Concurrent Versions System ● Problemas? – Impossibilidade de renomear arquivos e diretórios ● Eles devem ser removidos e depois readicionados ● Perda do histórico com esse método – Não existe versionamento de diretórios    
  9. 9. CVS ● Problemas? – O versionamento de arquivos apresenta problemas ● Problema da renomeação de arquivos citada anteriormente ● Dois arquivos com o mesmo nome no mesmo diretório compartilham o mesmo histórico, mesmo que ambos não tenham relação ● Versionamento por arquivo ● Ou seja, perde histórico quando não deve, e o mantém igualemente quando não deve ● Quem poderá nos defender?    
  10. 10. Subversion! ● Versionamento de arquivos, diretórios, e metadados do repositório ● Operações de cópia copiam o histórico do arquivo original para o novo ● Operações de movimentação levam junto o histórico do arquivo ● Dois arquivos de mesmo nome, no mesmo diretório, tem históricos diferentes ● Versionamento por módulo    
  11. 11. Subversion ● Versionamento por módulo ● Commits atômicos ● Versionamento por módulo, não por arquivo ● Escolha da camada de transporte ● Diferenciação automática de arquivos binários e texto ● Branching e tagging eficientes ● Hackability    
  12. 12. Arquitetura    
  13. 13. Pradigmas de controle de revisão ● Lock-modify-unlock – Problemas administrativos – Serialização desnecessária – Falsa sensação de segurança ● Copy-modify-merge – Cria cópias pessoais do repositório – Ao executar o commit, deve ser feito uma mescla das alterações realizadas, e resolver conflitos com outras alterações    
  14. 14. Revisões ● São números aplicados a um objeto para identificar a versão única do objeto ● CVS – Números de revisão são por arquivo – Um número de revisão não significa nada para os demais arquivos – Um commit atualiza apenas os números de revisão dos arquivos que foram alterados    
  15. 15. Revisões ● SVN – Números de revisão são globais dentro do  repositório – Identificam o estado do repositório em um dado  instante – Um commit cria um snapshot do repositório – Não consome mais espaço, pois é feita uma cópia  simpbólica dos arquivos não alterados    
  16. 16. Ciclo de Trabalho ● “Checkout” de uma cópia de trabalho ● Atualizar uma cópia de trabalho ● Fazer alterações ● Examinar suas alterações ● Mesclar com as alterações dos demais ● “Commit” das alterações    
  17. 17. Ciclo da trabalho ● “Checkout” de uma cópia de trabalho svn checkout file:///home/trbecker/UFRGS ● Atualizar uma cópia de trabalho svn update [­r revisão] [arquivo] ● Saída da atualização U 'foo' Arquivo foi atualizado A 'foo' Arquivo foi adicionado ao repositório D 'foo' Arquivo foi deletado do repositório R 'foo' Arquivo foi substituído G 'foo' Arquivo foi mesclado (merged) C 'foo' Arquivo está em conflito com o existente na cópia  de trabalho    
  18. 18. Ciclo de trabalho ● Fazer alterações (por conta do desenvolver) ● Examinar suas alterações svn status _ L 'foo' Existe um lock do arquivo no diretório .svn M 'foo' O arquivo tem alterações locais _M 'foo' Existe uma modificação nos atributos do arquivo ? 'foo' Arquivo não gerenciado ! 'foo' O arquivo era gerenciado, mas foi deletado A + 'foo' Adicionado com informação de onde veio M + 'foo' Adicionado com histórioco e possui histórico  local D 'foo' Agendado para deleção A 'foo' Agendado para adição    
  19. 19. Ciclo de trabalho ● Examinar suas alterações svn diff [­r revision:revision] [arquivo] – Exibe as alterações detalhadas das  mudanças feitas ● Reverte todas as alterações svn revert ● Grava os dados novos no repositório svn commit    
  20. 20. Ciclo de trabalho ● Causadores de conflitos são postos em um arquivo, como em CVS ● Três arquivos começando com tmp são criados, um de cada uma das árvores da mesclagem, tornando possível analisar os arquivos originais, e usar outras ferramentas de mesclagem externas ● SVN não permite que sejam cometidos criadores de conflito, ao contrário do CVS    
  21. 21. Resolução de conflitos ● Mesclar manualmente os arquivos (inflizmente nem tudo funciona como gostariamos :)) ● Copiar um dos arquivos tmp por cima de um do seu arquivo ● Executar svn revert para reverter as alterações anteriores ● Após resolvidos – Execute snv resolve – Delete os arquivos tmp    
  22. 22. Mensagens de log ● Ao cometer novas revisões ao svn, é possível adicionar mensagens de log ● Na verdade, é bastante recomendável ● Como fazer – svn commit ­m “mensagem de log” – svn commit ­F arquivo.log – svn commit e escrever o arquivo de log no editor, quando ele aparecer    
  23. 23. Branching ● Branch: cópia do repositório para edição paralela ● Tags == branches ● Dois modos de operação – No servidor ● svn copy url url – Local ● svn copy trunk branches/trbecker    
  24. 24. Branching ● Mesclagem – svn merge – mescla árvores – Mesmos dois modos de operação: servidor ou local Ex: svn merge branches/trbecker trunk ● Resolver conflitos cfme. descrito anteriormente    
  25. 25. Perguntas?    
  26. 26. Agradecimentos :)    

×