Concurrent Versions System Leandro Augusto de Oliveira [email protected].
Transcript of Concurrent Versions System Leandro Augusto de Oliveira [email protected].
2
Sumário
• Introdução• Por que usar o CVS?• Criando um projeto com CVS• Comandos básicos• Adicionando, removendo e renomeando arquivos e
diretórios• Revisões e tags• Desvios• Substituição de palavras chave• Conclusões
3
Introdução
• CVS é um sistema de controle de versões concorrente.
• É um software de código aberto, com licença GPL.
• Está disponível em www.cvshome.org
4
Por que usar o CVS?
• Problemas em fazer controle de versões manualmente:– Utiliza muito espaço em disco
– Conduz facilmente a erros
• CVS salva o arquivo e todo seu histórico de modificações em um único arquivo, armazenando apenas as diferenças entre as versões.
• CVS permite que vários desenvolvedores trabalhem sobre o mesmo arquivo simultaneamente. Ele se encarrega de “mesclar” as versões, relatando conflitos.
5
Por que usar o CVS?
• Ajuda a rastrear bugs.
• Por exemplo, quando o código é modificado, é comum que o programador introduza erros que somente são detectados muito tempo após a alteração.
• Com CVS, é possível recuperar uma versão anterior que funcione para identificar a causa do erro.
• Também permite verificar a produtividade de um programador, através do histórico de modificações.
6
Criando um projeto com CVS
• A variável de ambiente $CVSROOT deve apontar para o diretório onde está localizado o repositório do CVS.
• Para adicionar um projeto ao repositório– $ cd wdir
– $ cvs import rdir gaph start
– $ cd ..
– $ cvs checkout rdir
– $ rm -r wdir
7
Comandos Básicos
• Para recuperar um projeto chamado xuxu:– $ cvs checkout xuxu
• Para gravar suas alterações no repositório:– $ cvs commit
• Para recuperar as alterações no projeto atual:– $ cvs update
8
Adicionando, removendo e renomeando arquivos e diretórios
• Para adicionar um arquivo no repositório– $ cvs add arquivo.c
• Para remover um arquivo– $ cvs remove arquivo.c
• Para remover um diretório remova todos os arquivos dentro dele. A opção -P nos updates e checkouts para retira os diretórios vazios.
• Para renomear arquivos:– $ mv old new– $ cvs remove old– $ cvs add new– $ cvs commit -m "Renamed old to new" old new
9
Revisões e tags
• Cada arquivo tem um número de revisão associado. Para mudar o número de revisão do arquivo:– $ cvs commit -r 2.0
• Para atribuir uma tag à revisão atual:– $ cvs tag rel-0-4 arquivo.c
• Para verificar as tags de um arquivo– $ cvs status -v arquivo.c
• Para recuperar a revisão com uma determinada tag:– $ cvs checkout -r rel-1-0 projeto
10
Desvios
• Suponha que foi lançada a versão 1.0 do software e já se está trabalhando na 2.0. Porém, são encontrados bugs na versão 1.0, e demorará muito até que a próxima versão seja lançada.
• Um desvio na linha natural de desenvolvimento do software terá que ser feito.
• As correções feitas podem ser necessárias também na versão 2.0.
11
Desvios
• Para criar um desvio:– $ cvs tag -b rel-1-0-patches
• Será preciso escolher o desvio:– $ cvs checkout -r rel-1-0-patches projeto
• Ou, se já existe uma cópia:– $ cvs update -r rel-1-0-patches
• Para “mesclar” o desvio na versão final– $ cvs checkout projeto # Recupera última revisão
– $ cvs update -j R1fix m.c # Mescla desvios
– $ cvs commit -m "Included R1fix" # Cria revisão 2.1.
12
Substituição de palavras chave
– $Author$ --> login do último a alterar o arquivo.
– $Date$ --> Data e hora da revisão.
– $Header$ --> Um cabeçalho contendo o caminho do arquivo no repositório, a revisão, a data, o autor, o estado, e o responsável pelo lock.
– $Id$ --> Mesmo que $Header$, mas sem o caminho para o arquivo.
– $Name$ -->A tag usada para recuperar o arquivo. Por exemplo, ao executar o comando cvs co -r first, a palavra-chave expande para `Name: first'.
13
Substituição de palavras chave
– $Locker$ --> Login de quem trancou o arquivo.
– $Log$ --> A mensagem de log informada no commit, precedida de um cabeçalho contendo o caminho do arquivo no repositório, o número da revisão, o autor e a data. Mensagens de log existentes não são substituídas. A nova mensagem de log é inserida no final das anteriores
– $Revision$ --> O número da revisão.
– $Source$ --> Caminho do arquivo no repositório.
– $State$ --> Estado da revisão (cvs admin -s). Ex.: Exp (experimental), Stab (Estável), Rel(Release).
• Para ver o status, use cvs log
14
Conclusões
• Facilita a colaboração entre desenvolvedores, permitindo que dois ou mais desenvolvedores trabalhem de forma independente sobre o mesmo código fonte
• Permite identificar e resolver conflitos nos fontes
• Permite verificar a produtividade de um desenvolvedor
• Facilita o gerenciamento de releases do código
• Pode ser usado para qualquer linguagem. Isto inclui VHDL.
• Para maiores esclarecimentos consulte o site do CVS:– http://www.cvshome.org/