140 likes | 267 Views
Concurrent Versions System. Leandro Augusto de Oliveira laugusto@inf.pucrs.br. 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.
E N D
Concurrent Versions System Leandro Augusto de Oliveira laugusto@inf.pucrs.br
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
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
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.
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.
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
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
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 oldnew • $ cvs remove old • $ cvs add new • $ cvs commit -m "Renamed old to new" oldnew
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
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.
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.
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'.
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
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/