concurrent versions system leandro augusto de oliveira [email protected]

14
Concurrent Versions System Leandro Augusto de Oliveira [email protected]

Upload: internet

Post on 18-Apr-2015

106 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Concurrent Versions System Leandro Augusto de Oliveira laugusto@inf.pucrs.br

Concurrent Versions System

Leandro Augusto de Oliveira

[email protected]

Page 2: Concurrent Versions System Leandro Augusto de Oliveira laugusto@inf.pucrs.br

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

Page 3: Concurrent Versions System Leandro Augusto de Oliveira laugusto@inf.pucrs.br

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

Page 4: Concurrent Versions System Leandro Augusto de Oliveira laugusto@inf.pucrs.br

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.

Page 5: Concurrent Versions System Leandro Augusto de Oliveira laugusto@inf.pucrs.br

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.

Page 6: Concurrent Versions System Leandro Augusto de Oliveira laugusto@inf.pucrs.br

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

Page 7: Concurrent Versions System Leandro Augusto de Oliveira laugusto@inf.pucrs.br

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

Page 8: Concurrent Versions System Leandro Augusto de Oliveira laugusto@inf.pucrs.br

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

Page 9: Concurrent Versions System Leandro Augusto de Oliveira laugusto@inf.pucrs.br

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

Page 10: Concurrent Versions System Leandro Augusto de Oliveira laugusto@inf.pucrs.br

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.

Page 11: Concurrent Versions System Leandro Augusto de Oliveira laugusto@inf.pucrs.br

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.

Page 12: Concurrent Versions System Leandro Augusto de Oliveira laugusto@inf.pucrs.br

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'.

Page 13: Concurrent Versions System Leandro Augusto de Oliveira laugusto@inf.pucrs.br

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

Page 14: Concurrent Versions System Leandro Augusto de Oliveira laugusto@inf.pucrs.br

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/