SVN no Desenvolvimento de Software

1.203 visualizações

Publicada em

Slides do minicurso "SVN no Desenvolvimento de Software" ministrado na "III Semana Acadêmica da FACOMP" no dia 8 de novembro de 2013.

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

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

Nenhuma nota no slide

SVN no Desenvolvimento de Software

  1. 1. Universidade Federal do Pará III Semana Acadêmica da FACOMP Centro Acadêmico de Ciência da Computação Utilizando SVN no Desenvolvimento de Software Manoel Afonso Filho manoel.lima@icen.ufpa.br 8 de Novembro de 2013
  2. 2. Ementa ● Introdução ● Configuração do Projeto ● Principais Comandos ● Incorporação no Processo de Desenvolvimento ● Branching, Merging, Tagging ● Resolução de Conflitos ● Configuração de um Servidor SVN ● Outros Softwares de Controle de Versão
  3. 3. Introdução ● O desenvolvimento de software necessita de um rastreamento das mudanças feitas. ● ● ● Quando foi alterado? ● ● O que foi alterado? Quem alterou? Vários desenvolvedores trabalhando ao mesmo tempo. Documentação, arquivos de configuração, código-fonte.
  4. 4. Introdução ● ● Subversion é um sistema de controle de versões bastante popular. É um sistema centralizado. ● ● ● Um servidor armazena os arquivos e permite o trabalho colaborativo. Armazena informações de diretórios e arquivos. Multiplataforma
  5. 5. Introdução ● Alguns serviços de hospedagem SVN: ● Google Code ● Assembla ● RiouxSVN
  6. 6. Introdução ● Para sistemas Windows, podemos usar o cliente TortoiseSVN. http://tortoisesvn.net/downloads.html ● Para sistemas Linux, podemos usar a versão em linha de comando, embora existam vários clientes gráficos. sudo apt-get install subversion
  7. 7. Configuração do Projeto ● ● ● ● Criação de um repositório local Linux: $mkdir -p ~/MinicursoSVN/repos $svnadmin create ~/MinicursoSVN/repos/ Windows: TortoiseSVN > Criar repositório aqui A URL do nosso repositório local é: file:///home/usuario/MinicursoSVN/repos/
  8. 8. Configuração do Projeto ● Diretório trunk: ● ● Diretório tags: ● ● É onde as principais atividades de desenvolvimento ocorrem. Geralmente é neste diretório em que fazemos o check-out. Armazena snapshots do projeto. Exemplo: Qual código pode ir para a release. Diretório branches: ● São as linhas de desenvolvimento. Exemplo: Criar uma branch para fazer uma release. A branch foca na estabilidade enquanto que a trunk continua a desenvolver novos recursos.
  9. 9. Configuração do Projeto ● Criação do diretório base para o projeto $svn mkdir -m "Criação do diretório base." file:///<URL_BASE>/Exemplo
  10. 10. Configuração do Projeto ● Criação do diretório base para o projeto $svn mkdir -m "Criação do diretório base." file:///<URL_BASE>/Exemplo $svn mkdir -m "Configuração Inicial" file:///<URL_BASE>/Exemplo/trunk
  11. 11. Configuração do Projeto ● Criação do diretório base para o projeto $svn mkdir -m "Criação do diretório base." file:///<URL_BASE>/Exemplo $svn mkdir -m "Configuração Inicial" file:///<URL_BASE>/Exemplo/trunk $svn mkdir -m "Configuração Inicial" file:///<URL_BASE>/Exemplo/tags
  12. 12. Configuração do Projeto ● Criação do diretório base para o projeto $svn mkdir -m "Criação do diretório base." file:///<URL_BASE>/Exemplo $svn mkdir -m "Configuração Inicial" file:///<URL_BASE>/Exemplo/trunk $svn mkdir -m "Configuração Inicial" file:///<URL_BASE>/Exemplo/tags $svn mkdir -m "Configuração Inicial" file:///<URL_BASE>/Exemplo/branches
  13. 13. Configuração do Projeto ● Criação do diretório base para o projeto (TortoiseSVN) ● TortoiseSVN > Repo-browser ● Digitar a URL do repositório ● Criar as pastas necessárias para o projeto
  14. 14. Configuração do Projeto ● Importando para o repositório $cd desenv/projeto-importar $svn import -m "Import Inicial" <URL_BASE>/Exemplo/trunk
  15. 15. Configuração do Projeto ● Importando para o repositório (TortoiseSVN) ● Clique direito no diretório que se quer importar ● TortoiseSVN > Importar... ● Digitar a <URL_BASE>/Exemplo/trunk ● Digitar a mensagem
  16. 16. Principais Comandos ● Check-out ● ● ● ● Antes de alterar o código, é preciso obter uma cópia dos arquivos do repositório. Esse é o processo de check-out. Os arquivos ficarão armazenados em um diretório local chamado de cópia de trabalho. Em geral, fazemos o check-out do trunk. $svn checkout <URL_BASE>/projeto/trunk projeto
  17. 17. Principais Comandos ● Commit (Check in) ● ● Após termos feito as mudanças no código, faremos o commit. Disponibiliza as nossas mudanças para todos no repositório. $svn commit -m "Commit inicial"
  18. 18. Principais Comandos ● Update ● ● ● Quando há vários desenvolvedores no mesmo projeto, todos estarão fazendo seus commits no repositório. O comando update obtém essas mudanças para a nossa cópia de trabalho. Durante o update, o SVN informa o que está sendo alterado na nossa cópia de trabalho. – – Arquivos adicionados, removidos e atualizados Arquivos cujo novo conteúdo foi incorporado à versão local $svn update
  19. 19. Principais Comandos ● Adicionando arquivos e diretórios ● Novos arquivos/diretórios não são enviados automaticamente para o repositório. ● Precisamos adicioná-los ao controle de versão. ● Serão enviados ao repositório no próximo commit. $svn add <arquivos>
  20. 20. Principais Comandos ● Removendo arquivos e diretórios ● ● ● Similar a adicionar arquivos. Se quisermos apagar um arquivo/diretório, primeiro o marcamos para remoção. No próximo commit a remoção é refletida no servidor. $svn delete <arquivos>
  21. 21. Principais Comandos ● Reverter mudanças da cópia de trabalho ● ● Restaura a cópia de trabalho para como ela estava quando foi realizado o último check-out ou update. Reverter não obtém as últimas alterações do repositório; update faz isso. $svn revert <aquivo> $svn revert -R <diretório> $svn revert -R . Projeto inteiro Arquivos e diretórios específicos
  22. 22. Incorporação no Processo de Desenvolvimento ● Check-out de um projeto
  23. 23. Incorporação no Processo de Desenvolvimento ● Check-out de um projeto
  24. 24. Incorporação no Processo de Desenvolvimento ● Check-out de um projeto
  25. 25. Incorporação no Processo de Desenvolvimento ● Check-out de um projeto
  26. 26. Incorporação no Processo de Desenvolvimento ● Commit
  27. 27. Incorporação no Processo de Desenvolvimento ● Ignorando arquivos e diretórios
  28. 28. Branching, Merging, Tagging ● Criando uma branch ● ● Os nomes das branchs podem conter qualquer caractere que um diretório possa ter. Mas, em geral, se usa nomes alfanuméricos. Podemos usar uma branch com o nome RB (Release Branch) seguido do número de versão. $svn copy -m "Criando branch" <URL_BASE>/trunk <URL_BASE>/branches/RB_1.0
  29. 29. Branching, Merging, Tagging ● Merging: ● Serve para inserir as correções feitas em alguma branch no trunk. $svn merge -c 16 <BASE_URL>/trunk $svn commit -m "Juntou r16 do trunk".
  30. 30. Branching, Merging, Tagging ● Tagging: ● ● Podemos utilizar as tags para saber quais partes de código compõem uma release. Por isso, são apenas leitura (read-only). Não se deve fazer commits numa tag. $svn update $svn copy . <BASE_URL>/tags/REL_1.0.0 -m "Criando tag R1.0.0"
  31. 31. Resolução de Conflitos ● ● ● Ocorre quando duas pessoas alteram a mesma parte do arquivo. Conflitos devem ser raros pois indicam que mais de uma pessoa está trabalhando na mesma coisa. Caso, ao fazer update ocorra um conflito, o SVN nos dá várias opções de resolução.
  32. 32. Resolução de Conflitos ● ● ● ● ● ● P: Postergar o conserto do conflito. Os arquivos são salvos com os marcadores de conflitos (sequências de <<< e >>>). Df: Exibe um diff de todas as mudanças no arquivo. E: Edita o arquivo em um editor. Manualmente encontra e resolve os conflitos. R: Marca como resolvido, aceitando todas as edições que fizemos. Mf: "My File". Ignora a versão do repositório e usa a nossa. Tf: "Their File". Ignora as nossas mudanças e usa a do repositório.
  33. 33. Configuração de um Servidor SVN ● ● Em sistemas Linux, utiliza-se o servidor Apache com os módulos do Subversion. Em sistemas Windows há disponível o servidor fornecido pela CollabNet. Disponível em: http://www.collab.net/downloads/subversion ● Também é possível utilizar hospedagem de terceiros, como Google Code, RiouxSVN, Assembla, etc. ● Alguns são gratuitos, outros requerem que o código-fonte seja aberto, etc.
  34. 34. Outros Softwares de Controle de Versão ● Git: ● ● ● ● Funciona localmente, por padrão Git armazena estado, história e integridade do código fonte, enquanto que SVN armazena apenas estado. Algumas operações são mais velozes no Git do que no SVN. Possui uma camada criptográfica para verificar a integridade pelo repositório.
  35. 35. Outros Softwares de Controle de Versão ● GNU Bazaar: ● ● ● ● ● Pode ser usado por um único desenvolvedor trabalhando em múltiplas branches de conteúdo local, ou por equipes colaborando pela rede. Multiplataforma. Eficiente em grandes quantidades de armazenamento e velocidade. Integrado ao Launchpad (forncedor de pacotes para o Ubuntu). Extensível por meio de plugins.
  36. 36. Leitura Recomendada ● Pragmatic Guide to Subversion. Mike Mason. 2010. Pragmatic Programmers.
  37. 37. OBRIGADO!

×