André Silva Rodrigues Diretor de Tecnologia CONTROLE DE VERSÕES COM SUBVERSION Introdução O que é subversion? Como subversion funciona? WorkSet Indo 05/11/2015 2 O que é Subversion? Abreviado por: SVN Sistema de controle de versão Projetado para substituir o CVS, outro sistema de controle de versão WorkSet Indo 05/11/2015 3 Como Subversion funciona? O servidor contém um repositório central de código Usa-se um cliente SVN para fazer download de uma cópia do fonte (checkout) Pode-se adicionar, editar ou excluir arquivos do repositório local, e após isso enviar as alterações ao servidor (commit) WorkSet Indo 05/11/2015 4 Definições Repositório Cópia de Trabalho Revisão Palavras-chave de Revisão Trunk Branch Tag WorkSet Indo 05/11/2015 5 Repositório Local onde se guarda o projeto A diferença entre um repositório e um diretório comum é que o primeiro é uma pasta controlada pelo Subversion Geralmente inclui um diretório chamado de “/.svn” ou “/_svn”, que contém as informações de controle WorkSet Indo 05/11/2015 6 Cópia de Trabalho Também conhecida como Working Copy Cópia do projeto no servidor, mantida localmente Alterações feitas são depois enviadas ao servidor WorkSet Indo 05/11/2015 7 Revisão Numeração utilizada pelo SVN para controle das versões Cada alteração incrementa o número de revisão Possibilidade de utilizar uma versão mais antiga WorkSet Indo 05/11/2015 8 Palavras-chave de Revisão HEAD A ultima ou mais nova revisão no repositório BASE Número da revisão de um item na cópia de trabalho, desconsiderando modificações locais COMMITTED A revisão maior ou igual a BASE em que um item foi modificado PREV Revisão imediatamente anterior à ultima revisao em que um item foi modificado. (COMMITTED-1) WorkSet Indo 05/11/2015 9 Trunk Linha principal de desenvolvimento Aqui ficam os arquivos que serão utilizados no diariamente Devem ser adicionadas apenas alterações previstas no projeto Exemplo: svn://.../ensino_distancia/trunk WorkSet Indo 05/11/2015 10 Branch Linha de desenvolvimento de novas funções Usado caso alguém queira adicionar uma nova funcionalidade não prevista no projeto Copia-se tudo de trunk para uma pasta dentro de branch Exemplo: svn://.../ensino_distancia/branch/videoconferencia WorkSet Indo 05/11/2015 11 Tag Pontos de referência no desenvolvimento Utilizado para guardar snapshots da aplicação A cada versão ou correção de bugs deve ser adicionada um snapshot Exemplo: svn://.../ensino_distancia/tag/versao_1 svn://.../ensino_distancia/tag/versao_1.1 svn://.../ensino_distancia/tag/versao_1.2 WorkSet Indo 05/11/2015 12 Controlando as Versões Problema em Compartilhar Método Lock-Modify-Unlock Método Copy-Modify-Merge Quando Lock é Necessário? WorkSet Indo 05/11/2015 13 Problema em Compartilhar WorkSet Indo 05/11/2015 14 Método Lock-Modify-Unlock WorkSet Indo 05/11/2015 15 Método Copy-Modify-Merge WorkSet Indo 05/11/2015 16 Método Copy-Modify-Merge WorkSet Indo 05/11/2015 17 Quando Lock é Necessário? Considerado prejudicial para a colaboração Alteração de arquivos não textuais (imagens) Motivos Merge não funciona em tais arquivos Evita desperdícios de tempo Alterações seriam descartadas WorkSet Indo 05/11/2015 18