svn: controle de revisões com subversion - thiago rafael becker

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

Upload: tchelinux-slides

Post on 09-Jun-2015

3.850 views

Category:

Technology


0 download

TRANSCRIPT

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

   

SVN: Controle de revisões com SVN: Controle de revisões com subversionsubversion

Thiago Rafael Beckerthiago.becker@gmail

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

   

His tór i co

● 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

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

   

Cont ro le de rev i sã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)

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

   

Repos i tór io

● 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

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

   

Repos i tór io

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

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

   

Repos i tór io

● 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

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

   

Repos i tór io

● 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

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

   

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

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

   

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?

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

   

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

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

   

Subvers ion

● 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

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

   

Arqu i tetura

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

   

Prad igmas de cont ro le de rev i sã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

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

   

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

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

   

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

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

   

Cic lo de Traba lho

● “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

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

   

Cic lo da t raba lho

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

● Atualizar uma cópia de trabalhosvn update [­r revisão] [arquivo]

● Saída da atualizaçãoU 'foo' Arquivo foi atualizadoA 'foo' Arquivo foi adicionado ao repositórioD 'foo' Arquivo foi deletado do repositórioR 'foo' Arquivo foi substituídoG 'foo' Arquivo foi mesclado (merged)C 'foo' Arquivo está em conflito com o existente na cópia 

de trabalho

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

   

Cic lo de t raba lho

● Fazer alterações (por conta do desenvolver)● Examinar suas alterações

svn status

_ L 'foo' Existe um lock do arquivo no diretório .svnM '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 deletadoA + 'foo' Adicionado com informação de onde veioM + 'foo' Adicionado com histórioco e possui histórico 

localD 'foo' Agendado para deleçãoA 'foo' Agendado para adição

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

   

Cic lo de t raba lho

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

– Exibe as alterações detalhadas das mudanças feitas

● Reverte todas as alteraçõessvn revert

● Grava os dados novos no repositóriosvn commit

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

   

Cic lo de t raba lho

● 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

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

   

Reso lução de conf l i tos

● 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

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

   

Mensagens de l og

● 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

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

   

Branch ing

● 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

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

   

Branch ing

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

localEx: svn merge branches/trbecker trunk

● Resolver conflitos cfme. descrito anteriormente

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

   

Perguntas?

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

   

Agradecimentos :)