CVS – Gerenciamento de Versões Priscila T. L. Rossato O que é o CVS? CVS é um sistema de controle de versões (Concurrent Versions System). Com CVS você pode gerenciar diferentes versões de um programa (ou projeto). Pode atualizar, adicionar e eliminar arquivos e diretórios ao programa. Pode criar ramificações de um projeto. Múltiplos programadores podem trabalhar ao mesmo tempo no mesmo projeto. http://www.cvshome.org/ Descrição Básica Repositório (Servidor CVS) – – – – é o repositório central: é uma árvore de arquivos e diretórios que corresponde à última versão de cada um dos arquivos-fonte do projeto e armazena também todo o histórico de modificações realizadas adicionalmente, contém arquivos criados pelo programa cvs para o gerenciamento das versões. acesso nunca é direto, mas através de ferramentas do pacote CVS Módulos: nomes definidos pelo usuário para subconjuntos da árvore de diretórios do repositório Descrição Básica Cópia de Trabalho (Cliente CVS): – – – – cada usuário trabalha em sua própria cópia dos arquivos e diretórios de um repositório, utilizada no desenvolvimento usuários trabalham concorrentemente: nada é “travado” (lock files) ou “reservado” ; Cada usuário pode criar sua própria cópia dos arquivos a qualquer momento - normalmente pega-se as últimas versões; versões anteriores também podem ser obtidas facilmente; Conceitos Básicos Versão: – – Todo arquivo tem uma versão que é automaticamente definida pelo cvs. De uma maneira geral a versão do arquivo é redefinida a cada alteração do arquivo que foi gravada no repositório. Conceitos Básicos Tag: – – É um nome simbólico dado a uma determinada versão do projeto, pode ser usado para delimitar etapas do desenvolvimento de um projeto. É possivel reverter o projeto para uma versão anterior através da tag. Conceitos Básicos Release: É uma versão definitiva de todos os arquivos do projeto. – A diferença entre o tag e o release, é que o tag não modifica a versão dos arquivos do projeto. O release modifica a versão de todos os arquivos, dando a todos os arquivos um mesmo número de versão. – Depois de definido o release o mesmo não pode ser modificado. – Conceitos Básicos Brach: – – Um branch (ramo) é usado para dividir um projeto. Normalmente existe o ramo mestre e os ramos secundários. É possivel fundir dois branches (merge) de maneira automática Principais Comandos checkout: obter uma cópia de um módulo para a área de trabalho local commit: enviar as alterações da cópia local para o repositório update: atualizar a cópia local com eventuais mudanças do repositório add/remove: adicionar e remover arquivos de um módulo diff: compara diferentes versões dos arquivos Diagrama de Operação TortoiseCVC TortoiseCVS é uma interface gráfica de um Cliente CVS. Fácil e intuitiva Permite que os desenvolvedores controle os arquivos do CVS diretamente pelo Windows Explorer Entendendo os ícones Checkout - Obter um módulo Commit – CVS Gravar Novo Arquivo: Primeiro tem que Adicionar o arquivo e depois Gravar Alterar Arquivo Existente: Apenas Gravar o arquivo Excluir Arquivo: Deve Remover o arquivo e depois Gravar a remoção Update – CVS Atualizar Quando dois ou mais desenvolvedores modificam o mesmo arquivo-fonte, o CVS irá automaticamente fundir as modificações durante o commit Entretanto, se dois (ou mais) desenvolvedores modificam a mesma linha, o CVS registra um conflito e aceita apenas o primeiro commit realizado Conflitos O CVS deixará indicações do conflito na sua cópia de trabalho, os arquivos em conflito contém marcações na forma: <<<<< <nome do arquivo> [versão local do código] ===== [versão do repositório] >>>>> <número da versão no repositório> Essas marcações deixam o código "incompilável“ Por garantia, o CVS faz uma cópia da versão local antes de colocar as marcações (pe. .#usanConst.pas.1.41) O conflito deve ser resolvido manualmente pelo desenvolvedor, onde ele deve escolher qual é o código correto Utilitários Diferenças: mostra visualmente a diferença entre dois arquivos. Utilitários Histórico: é o histórico de todas as alterações do arquivo (data, autor e comentário). Utilitários Anotações: é possível ver quem alterou cada linha do arquivo e em qual versão. Alteração Manual do Repositório (Linux) Em algumas situações é preferível alterar manualmente o repositório, ao invés de utilizar os comandos add e remove: – – – para mover diretórios e preservar seu conteúdo inalterado para mover arquivos e manter seu histórico para remover arquivos e diretórios definitivamente do CVS, inclusive seus históricos Atenção !!! SEMPRE LEMBRE DE COLOCAR O COMENTÁRIO AO GRAVAR O ARQUIVO Todos os Forms devem ser gravados em forma de Texto, para isso sempre selecione a opção “Text DFM” Sempre lembre de adicionar as novas classes ao projeto Referências Uso do CVS com Eclipse – – http://hotwork.sourceforge.net/hotwork/manual/ecl ipse/eclipse-userguide.html#CONTROLE_DE_VERS%C3O Uso do CVS com Tortoise – – http://www.tortoisecvs.org/