cvs - slides parte 3 - básico

38
3-1 CVS www.mardenneubert.com www.mardenneubert.com © 2005 Marden Neubert Uso Básico do CVS Módulo 3 Foco: Autor

Upload: marden-neubert

Post on 17-Dec-2014

475 views

Category:

Technology


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: CVS - Slides Parte 3 - Básico

3-1

CVS

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Uso Básico do CVS

Módulo 3

Foco: Autor

Page 2: CVS - Slides Parte 3 - Básico

3-2

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Agenda

• Configurando acesso ao repositório• Obtendo arquivos do repositório• Descartando uma cópia local• Submetendo alterações: quando e como• Atualizando a área de trabalho• Adicionando, apagando e movendo arquivos• Verificando status e históricos de arquivos• Inspecionando diferenças entre revisões• Usando palavras-chave• Configurando o cliente CVS

Page 3: CVS - Slides Parte 3 - Básico

3-3

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Configurando o Acesso a um Repositório

• Os comandos CVS dependem de um repositório para executar: alguns apenas o consultam, outros o alteram

• A localização do repositório deve ser especificada para todos os comandos. O formato é o seguinte:– [:método:][usuário[:senha]@][servidor[:porta]]raiz

• O CVS procura a especificação das seguintes formas:– Na opção global –d. Ela pode ser especificada na linha de

comando do CVS ou no arquivo .cvsrc, como veremos adiante– No arquivo Root dentro dos diretórios CVS na área de

trabalho• Apesar de ser possível, não invoque comandos especificando uma

opção –d em uma área configurada para um repositório diferente

– No variável de ambiente $CVSROOT

• As fontes mencionadas são buscadas na ordem listada

Page 4: CVS - Slides Parte 3 - Básico

3-4

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Obtendo Arquivos do Repositório

• Há duas motivações principais para se obter arquivos de um repositório

• Para consultá-los, editá-los e submeter alterações, o que é feito a partir de uma área de trabalho– Se a área ainda não foi criada, usa-se checkout, que

também pode ser usado sobre uma área existente– Se a área já existe, o mais indicado é utilizar-se o

comando update

• Para distribuí-los, o que não cria nem requer a existência de uma área de trabalho– Para isso, usa-se o comando export, visto adiante

Page 5: CVS - Slides Parte 3 - Básico

3-5

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Arquivos e Revisões Obtidos

• Ao obter arquivos, informamos quais arquivos e quais revisões desejamos trazer

• Em relação aos arquivos:– O mais comum é trazermos todo um módulo– É possível trazer subdiretórios ou até arquivos

específicos de um módulo

• Em relação às revisões:– É mais freqüente pedirmos as revisões mais recentes– É possível obter revisões marcadas por uma etiqueta,

criadas até uma certa data ou as últimas em um ramo

• Todas essas alternativas são opções para checkout e update

Page 6: CVS - Slides Parte 3 - Básico

3-6

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

O Comando checkout

• O comando checkout cria uma nova área de trabalho ou atualiza uma área existente

• cvs [op_glob] checkout [op_cmd] módulos...– op_glob são opções globais do CVS, a principal é –d– op_cmd são opções específicas para checkout, vistas adiante– módulos... são um ou mais nomes de módulos, de

subdiretórios ou de arquivos sob a raiz do repositório, que serão obtidos

• Se a área não existe, para cada módulo especificado, checkout cria um diretório onde o comando foi chamado– O novo diretório é a raiz da área de trabalho e seu nome é

normalmente o mesmo do módulo especificado– Os arquivos criados têm permissão de escrita, a não ser que a

opção global –r seja usada ou $CVSREAD seja definida• Quando usado sobre uma área existente, tem o mesmo

comportamento que update com a opção de comando -d

Page 7: CVS - Slides Parte 3 - Básico

3-7

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Principais Opções de checkout

• Principais opções de comando para checkout:– -P: Não cria diretórios vazios na área de trabalho– -d outro_dir: Cria a área de trabalho sob o diretório

outro_dir e não usa o nome do módulo– -D data e -r revisão: Obtém as revisões especificadas

por data ou revisão (número ou etiqueta). Aderentes– -f: Com -D ou -r, força a obtenção das últimas revisões

de arquivos que não casam com as especificações– -j revisão: Mescla revisões: vista no próximo módulo– -c e -s: Não obtém arquivos, apenas lista módulos no

repositório; a opção -s mostra o status do módulo

Page 8: CVS - Slides Parte 3 - Básico

3-8

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Descartando uma Área de Trabalho

• Uma área que não é mais usada pode ser descartada– Como o CVS não trava arquivos para edição, isso pode ser feito

simplesmente removendo o diretório da área– Perigo: alterações ainda não submetidas são perdidas

• Para isso, o CVS disponibiliza o comando release, que verifica se alterações pendentes de check-in na área

• cvs [op_glob] release [op_cmd] diretórios...– op_cmd: a principal opção do comando é –d. Se especificada,

release apaga os arquivos da área; o default é mantê-los– diretórios...: uma ou mais raízes de áreas de trabalho; o

comando deve ser chamado de logo acima delas

• Na saída, release imprime uma mensagem para cada arquivo que não estava em sincronia com o repositório

Page 9: CVS - Slides Parte 3 - Básico

3-9

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Alterando Arquivos na Cópia Local

• Os arquivos podem ser editados na cópia local como em qualquer diretório normal

• Para arquivos de texto, use seu editor preferido– Adicione-os como texto ao repositório– Não se preocupe com fins-de-linha, o CVS os converte

no servidor, para evitar problemas entre plataformas

• Para arquivos binários, use uma ferramenta correspondente ao tipo (.pdf, .doc, .gif, etc)– Adicione-os como arquivos binários ao repositório (-kb)– O CVS não tentará mesclas; resolva eventuais conflitos

comparando as revisões manualmente

Page 10: CVS - Slides Parte 3 - Básico

3-10

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Submetendo Alterações

• Para que as alterações feitas na cópia local sejam visíveis para outros, elas devem ser submetidas– A submissão ou check-in propaga as alterações para o

repositório, criando novas revisões dos arquivos• Uma questão freqüente de programadores em projetos

de software é: quando submeter alterações?– Se o check-in é feito muito cedo, ele pode introduzir erros de

execução (pela falta de testes) ou até de compilação– Se o check-in é feito muito tarde, as alterações demoram a

ficar disponíveis para os demais e aumenta o risco de conflitos• A regra geral é: realize uma unidade de trabalho por

vez, conclua-a e a submeta como um todo para o repositório

• A definição de unidade de trabalho varia de acordo com a política da linha de código em uso, mas, no mínimo:– A alteração deve manter o código do projeto compilando– A alteração deve ter passado por testes unitários básicos

Page 11: CVS - Slides Parte 3 - Básico

3-11

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

O Comando commit

• O comando commit submete arquivos alterados na área de trabalho, criando novas revisões

• cvs [op_glob] commit [op_cmd] [arquivos...]– op_glob são opções globais do CVS e op_cmd são específicas

de commit, que serão vistas adiante– Zero ou mais arquivos (ou diretórios) podem ser dados;

commit inspeciona diretórios recursivamente

• O comportamento de commit é o seguinte:– Identifica, dentre os arquivos, quais foram alterados na cópia

local– Dentre os alterados, verifica se todos estão atualizados

• Se algum arquivo está desatualizado, termina em erro, pede update

– Abre um editor pedindo uma mensagem de log para o check-in– Cria uma nova revisão para cada arquivo alterado

Page 12: CVS - Slides Parte 3 - Básico

3-12

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Principais Opções de commit

• As principais opções para commit são:– -m mensagem e -F arquivo: Especificam uma

mensagem ou um arquivo contendo uma mensagem• A mensagem (chamada de log) é usada para documentar a

operação no repositório, funcionando como um comentário

– -f: Força a criação de uma nova revisão mesmo que os arquivos especificados não tenham sido alterados

– -r revisão: Cria uma nova revisão, que pode ser um nome de ramo ou um número de revisão (implica -f)

• Se revisão for um número, deve ser maior que qualquer outro número de revisão existente e a nova revisão terá tal número

• Exemplo: executando cvs commit -r 3.0 na raiz do módulo, será criada uma nova revisão para cada arquivo, numerada 3.0

Page 13: CVS - Slides Parte 3 - Básico

3-13

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Lab3-1: Submetendo Alterações

• Alterar um arquivo e submeter alterações sem especificar uma mensagem na linha de comando

• Testar o comportamento recursivo de commit

• Forçar o check-in de uma revisão, mesmo sem alterações

• Atribuir um novo número derevisão a todos os arquivosde um módulo

Page 14: CVS - Slides Parte 3 - Básico

3-14

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Atualizando a Área de Trabalho

• É uma boa prática manter a área de trabalho sempre atualizada com o repositório– Permite que as últimas alterações sejam vistas– Evita que se trabalhe sobre revisões antigas (conflitos)

• O comando que atualiza uma cópia é update• cvs [op_glob] update [op_cmd] [arquivos...]

– op_glob são globais, op_cmd são vistas adiante– O argumento são zero ou mais arquivos (e diretórios),

que serão inspecionados e atualizados, se necessário

• A saída produzida por update mostra, para cada arquivo processado, o status da atualização

Page 15: CVS - Slides Parte 3 - Básico

3-15

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Principais Opções de update

• As opções mais usadas com update são:– -d: Faz com que novos diretórios no repositório sejam criados

na cópia local; é sempre recomendável usar -d– -P: Assim como em checkout, -P faz com que diretórios vazios

não sejam criados na cópia local– -D data e -r revisão: Atualiza a cópia com revisões

especificadas por data ou revisão (número/etiqueta). São opções aderentes

– -f: Com -D ou -r, força a obtenção das últimas revisões de arquivos que não casam com as especificações

– -A: Limpa opções aderentes na cópia local– -C: Sobrescreve alterações na cópia local– -I padrão e -W espec: Usa padrão e espec para ignorar ou

configurar de arquivos com base em padrões de nome– -j revisão: Faz a mescla de revisão com a cópia local

(avançado)

Page 16: CVS - Slides Parte 3 - Básico

3-16

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Formato da Saída de update

• Cada linha tem o formato X arquivo, onde X representa um dos seguintes status para arquivo:– U ou P: O arquivo foi atualizado com relação ao repositório

• U indica atualização completa, P indica que um patch foi feito– A: O arquivo foi adicionado a partir da cópia local (com

add), mas isso ainda não foi submetido (com commit)– R: O arquivo foi removido a partir da cópia local (com

remove), mas isso ainda não foi efetivado (commit)– M: O arquivo foi modificado na cópia local e:

• Não havia modificações no repositório; a cópia local não é alterada ou

• As modificações no repositório foram mescladas com sucesso (sem conflitos) e o resultado está agora na cópia local

– C: O arquivo foi modificado na cópia local e no repositório e, ao se tentar a mescla, ocorreu um conflito. A mescla deve ser manual

– ?: O arquivo não corresponde a nada no repositório: ele deveria ser adicionado (add) ou ignorado (cvsignore ou –I)

Page 17: CVS - Slides Parte 3 - Básico

3-17

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Revertendo Alterações

• Uma situação comum é desejarmos voltar um arquivo para uma revisão antiga. Isso ocorre:– Porque a alteração não corrigiu um erro, ou criou outro– Quando um requisito alterado é cancelado

• Há duas formas de usar update para reverter uma alteração (p.e., voltar da 1.3 para a 1.2):– Usar a opção –r para obter a revisão desejada e especificar –

p, que faz com que o resultado seja escrito na saída padrão:• cvs update –r 1.2 –p Country.java > Country.java

– Usar a opção –j para fazer uma mescla entre as duas revisões, de forma a produzir a 1.2 (atenção à ordem das opções):

• cvs update –j 1.3 –j 1.2 Country.java

• Um check-in será feito, criando a revisão 1.4, igual à 1.2

Page 18: CVS - Slides Parte 3 - Básico

3-18

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Lidando com Conflitos

• Um conflito surge quando o CVS não consegue realizar uma mescla automaticamente

• O CVS tenta uma mescla automática quando o arquivo em questão permite isso (veja cvswrappers) e:– Executamos update para atualizar a cópia local, onde um arquivo

foi modificado e há uma revisão mais nova no repositório– Executamos update com a opção –j para mesclar duas revisões

• O algoritmo de mescla do CVS funciona linha a linha– Se as revisões mescladas diferem em linhas distantes do arquivo, o

algoritmo automático terá sucesso– Caso contrário, há um conflito; o algoritmo produzirá um resultado

intermediário, um arquivo com marcações para a mescla manual– Em ambos os casos, a cópia local do arquivo é salva em back-up

• Para resolver um conflito, busque pelas marcações, edite o arquivo, mantendo o conteúdo correto, e faça o check-in– Com arquivos binários, abra e edite as revisões na ferramenta

Page 19: CVS - Slides Parte 3 - Básico

3-19

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Lab3-2: Atualizando a Cópia Local

• Utilizar opções aderentes com update• Tentar submeter alterações com opções

aderentes• Limpar opções aderentes da cópia local• Reverter uma alteração• Realizar uma mescla automática

Page 20: CVS - Slides Parte 3 - Básico

3-20

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Adicionando Arquivos

• O comando add adiciona ao repositório um novo arquivo ou diretório, presente na cópia local– Ao decidir quais arquivos devem ser colocados sob o controle

de versões, valem as regras já apresentadas• cvs [op_glob] add [op_cmd] arquivos...

– op_glob são opções globais, op_cmd são opções de comando:• -k modo: define o modo default de substituição de palavras-chave• -m mensagem: especifica uma mensagem de criação

(comentário)– O argumento é um ou mais arquivos (ou diretórios) a serem

adicionados ao repositório• Ao contrário de outros comandos, add não é recursivo

– Antes de um arquivo ser adicionado, seu diretório deve ser– É possível usar coringas (*.java), que são expandidos pelo shell

• Arquivos processados por add ficam programados para adição: a confirmação só ocorre com commit

Page 21: CVS - Slides Parte 3 - Básico

3-21

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Removendo Arquivos

• O comando remove apaga arquivos do repositório– Os históricos não são apagados, pois deve ser possível recuperar

revisões anteriores; eles são movidos para o diretório Attic

• cvs [op_glob] remove [op_cmd] [arquivos...]– op_glob são opções globais, op_cmd são opções de comando:

• -f: Apaga o arquivo da cópia de trabalho e então executa o comando• -l e -R: Opções que permitem controlar a recursividade

– O argumento são zero ou mais arquivos (e diretórios)

• Antes de se chamar remove, o arquivo tem que ser apagado da cópia local, a não ser que –f seja usado

• O comando remove é recursivo por default– Perigo se –f for usado: força uma remoção recursiva

• Assim como add, remove não confirma a remoção do arquivo no repositório; isso deve ser feito com commit

Page 22: CVS - Slides Parte 3 - Básico

3-22

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Abortando e Ressuscitando Arquivos

• É possível cancelar a adição e a remoção de arquivos antes que commit seja chamado

• Abortando a adição de um arquivo– Cenário: Criei um arquivo na cópia local, programei sua

adição com add e desisti da adição– Solução: Apago o arquivo da cópia local e executo

remove sobre ele: a adição é abortada

• Ressuscitando um arquivo– Cenário: Apaguei o arquivo da cópia local e desisti da

remoção– Solução: Executo update, o arquivo será restaurado– Cenário: Apaguei o arquivo da cópia local, programei sua

remoção com remove e desisti do processo– Solução: Executo add sobre o arquivo, ele é ressuscitado

Page 23: CVS - Slides Parte 3 - Básico

3-23

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Movendo ou RenomeandoArquivos e Diretórios

• O CVS não possui operações para mover ou renomear arquivos e diretórios– Usando somente comandos do cliente, essas operações são

feitas combinando-se uma remoção e uma adição– Outra opção seria editar diretamente o repositório, como vimos

no módulo de administração (nem sempre possível ou necessário)

• Movendo ou renomeando um arquivo– Mova ou renomeie o arquivo na cópia local, execute remove e

depois add, comente a operação nas mensagens de commit– Preserva o histórico do arquivo original e as liberações antigas,

mas não deixa registros da movimentação

• Movendo ou renomeando um diretório– Mova ou renomeie o diretório na cópia local, execute remove e

add para os arquivos internos. Use –P com update e checkout– Tem as mesmas vantagens e desvantagens do caso com

arquivos

Page 24: CVS - Slides Parte 3 - Básico

3-24

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Lab3-3: Movimentando Arquivos e Diretórios

• Tentar adicionar um arquivo sem antes adicionar o diretório pai

• Abortar a adição de um arquivo• Ressuscitar um arquivo• Mover um arquivo de diretório• Renomear um diretório• Desafio: como “reencarnar” um arquivo

(isto é, restaurá-lo depois de um commit já foi feito)?– Veja como restaurar uma revisão anterior– Note que, quando um arquivo é removido, uma

revisão “morta” é criada

Page 25: CVS - Slides Parte 3 - Básico

3-25

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Verificando o Status de Arquivos

• O comando status é uma forma simples e rápida de verificar o estado dos arquivos na cópia local

• cvs [op_glob] status [op_cmd] [arquivos...]– op_glob são opções globais e op_cmd são opções de

comando; a principal opção de status é:• -v: Exibe informações sobre etiquetas aplicadas nos arquivos

– O argumento são zero ou mais arquivos a serem examinados

• Usando status, é possível identificar, para um arquivo:– O número da última revisão no repositório e a revisão local– Se ele está modificado, desatualizado ou tem mescla pendente– As opções aderentes aplicadas sobre ele (data, etiqueta,

opção-k)

• A saída de status exibe um conjunto de informações para cada arquivo inspecionado

Page 26: CVS - Slides Parte 3 - Básico

3-26

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Consultando Históricos

• O comando log exibe históricos de arquivos– A saída de log é, para cada arquivo, um cabeçalho

com algumas informações e a lista de revisões do histórico

• O cabeçalho dá a última revisão, etiquetas e outros detalhes

• Para cada revisão, é mostrado seu número, quem a criou e quando e a mensagem de log (o comentário do check-in)

• cvs [op_glob] log [op_cmd] [arquivos...]– As opções específicas op_cmd são vistas adiante– O argumento são zero ou mais arquivos (diretórios)

• O comando rlog é equivalente, mas pode ser usado sem uma cópia de trabalho

Page 27: CVS - Slides Parte 3 - Básico

3-27

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Principais Opções de log

• As opções de comando mais usadas com log são:– -d datas: Faz o log somente de revisões criadas no intervalo

especificado por datas, cujo formato é:• d1<d2 ou d2>d1 = datas entre d1 e d2• <d ou >d = datas anteriores ou iguais a d• >d ou d> = datas posteriores ou iguais a d• d = a data d (exatamente)

– -rrevisões: Faz o log somente de revisões dadas por revisões, tem o seguinte formato (não pode haver espaço depois de –r):

• r1:r2 e r1::r2 = revisões entre r1 e r2 (:: exclui r1)• :r e ::r = revisões anteriores a r (:: exclui r)• r: e r:: = revisões posteriores a r (:: exclui r)

– -N: Não imprime a lista de etiquetas aplicadas sobre os arquivos

– -h: Imprime só as informações do cabeçalho, não as revisões

Page 28: CVS - Slides Parte 3 - Básico

3-28

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Verificando Quem Alterou o Quê

• O comando annotate imprime os arquivos especificados anotando, para cada linha:– Qual foi a última revisão que a modificou– Quem foi o autor da revisão e quando ela foi

criada

• cvs [op_glob] annotate [op_cmd] [arquivos...]– op_glob são opções globais e op_cmd, opções de

comando; as mais usadas são –D data, –r rev e –f– O argumento é zero ou mais arquivos a anotar

• O comando rannotate é equivalente, mas pode ser usado sem uma cópia de trabalho

Page 29: CVS - Slides Parte 3 - Básico

3-29

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Listando Arquivos no Repositório

• É possível listar arquivos e diretórios no repositório, com ou sem uma cópia local

• cvs [op_glob] ls [op_cmd] [arquivos...]– op_glob são opções globais, op_cmd são opções de

comando, as mais importantes são:• -l: Formato longo: exibe todos os detalhes dos arquivos• -R: Habilita o comportamento recursivo (não é o default)• -D data e -r revisão: seleciona revisões por data e revisão

– O argumento são zero ou mais arquivos ou diretórios; se nenhum for especificado, lista a raiz do repositório

• ls só lista arquivos que estão presentes na cópia local• O comando rls é equivalente, não usa uma cópia

local e é mais usado, pois inspeciona diretamente o repositório

Page 30: CVS - Slides Parte 3 - Básico

3-30

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Lab3-4: Listando Modificações

• Verificar o status de arquivos em diversas situações já experimentadas– Adição– Remoção– Arquivo desatualizado– Mescla e conflito

• Inspecionar o histórico de revisões de um arquivo

• Anotar as alterações em um arquivo

Page 31: CVS - Slides Parte 3 - Básico

3-31

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Inspecionando Diferenças

• Um recurso importante oferecido pelo CVS é a capacidade de comparar duas revisões

• Para essa função existe o comando diff• cvs [op_glob] diff [op_cmd] [arquivos...]

– op_glob são opções globais, op_cmd são opções do comando, as mais usadas são as que selecionam revisões (vistas adiante)

– O argumento são zero ou mais arquivos (e diretórios); para cada arquivo, as revisões selecionadas pelas opções são comparadas

• Há várias opções de formatos de saída para diff• O CVS possui também o comando rdiff

– Recebe opções similares às reconhecidas por diff– Funciona diretamente no repositório, sem cópia local– Produz a saída no formato usado pelo utilitário patch

Page 32: CVS - Slides Parte 3 - Básico

3-32

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Opções Mais Usadas com diff

• Seleção de revisões e controle de palavras-chave:– O default é mostrar as diferenças entre a revisão-base e a

cópia do arquivo na área de trabalho– -D data e -r revisão: Especificam uma ou mais datas e

revisões (etiquetas ou números de revisão)• Se uma opção for usada, mostra as diferenças entre a revisão

especificada pela opção e a cópia na área de trabalho• Se duas opções forem usadas, mostra as diferenças entre as

revisões especificadas pela primeira opção e a segunda opção– -k opção-k: Processa palavras-chave de acordo com

opção-k

• Controle do formato da saída:– -b: Ignora mudanças formadas por espaços em branco– -C n: Usa o formato de Contexto, com n linhas de contexto– -U n: Usa o formato Unificado, com n linhas de contexto– -y: Usa o formato lado-a-lado

Page 33: CVS - Slides Parte 3 - Básico

3-33

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Formatos de Saída de diff

• Normal (default)– Cada bloco de diferenças mostra que alteração ocorreu,

linhas do arquivo 1 (precedidas por <) e do arquivo 2 (precedidas por >)

• Contexto– Começa com um cabeçalho, seguido por blocos indicando

o que foi mudado e algumas linhas de contexto em torno

• Unificado– Similar ao formato de Contexto; os caracteres que indicam

as modificações são diferentes– É um padrão usado por algumas ferramentas

• Lado-a-lado– Os arquivos são exibidos lado-a-lado, com linhas

correspondentes dispostas na mesma linha da saída– É o mais conveniente para inspeção visual

Page 34: CVS - Slides Parte 3 - Básico

3-34

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Lab3-5: Comparando Revisões

• Comparar:– A revisão na cópia local contra sua revisão-base– A revisão na cópia local contra uma revisão

arbitrária– Duas revisões arbitrárias, na ordem inversa e

direta

• Utilizar os formatos:– Normal– Contexto– Unificado– Lado-a-lado

Page 35: CVS - Slides Parte 3 - Básico

3-35

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Palavras-Chave

• O mecanismo de palavras-chave permite que informações sobre revisões sejam incluídas nos arquivos– É útil para se consultar informações sem usar comandos como

status e log ou fora da cópia local– Utilizado também para criar, dentro de programas, strings

identifiquem a revisão compilada

• Palavras-chave mais utilizadas:– $Author$: login do usuário que criou a revisão– $Date$: data de criação da revisão– $Revision$: número da revisão– $Log$: mensagens de log, números de revisões, datas e

autores. As mensagens de revisões anteriores são mantidas

• O modo padrão de substituição funciona convertendo $Revision$ para $Revision: 1.3$ ao criar a revisão 1.3

Page 36: CVS - Slides Parte 3 - Básico

3-36

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Controlando a Substituição de Palavras-Chave

• Queremos controle sobre a substituição quando:– Temos um arquivo binário e não queremos corromper o conteúdo– O arquivo vai ser exportado do CVS e queremos manter somente

a informação dada pela palavra-chave, não seu nome– Estamos comparando revisões e queremos evitar que as

palavras-chave gerem diferenças artificiais

• Principais modos de controle de substituição (opções-k):– -kkv: É o modo default: gera nome e valor da palavra-chave– -kb: Inibe a expansão de palavras-chave, bem como a conversão

de fins-de-linha – usado com arquivos binários– -kk: Gera apenas o nome da palavra-chave – útil ao se executar o

comando diff e realizar mesclas– -ko: Inibe a expansão de palavras-chave e converte fins-de-linha– -kv: Gera apenas o valor da palavra-chave – útil ao se exportar

Page 37: CVS - Slides Parte 3 - Básico

3-37

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Lab3-6: Usando Palavras-Chave

• Inserir palavras-chave em um arquivo• Verificar os resultados da substituição

padrão• Controlar a substituição de palavras-chave

Page 38: CVS - Slides Parte 3 - Básico

3-38

www.mardenneubert.comwww.mardenneubert.com© 2005 Marden Neubert

Especificando Opções Default

• O CVS permite que o usuário especifique opções globais e de comandos que devem ser default

• O arquivo .cvsrc, no diretório home do usuário, é usado para incluir opções default

• Opções de comandos:– Cada linha começa com um nome de comando, seguido de

uma ou mais opções daquele comando– Quando o comando é executado pelo usuário, o CVS inclui,

logo após o nome do comando, as opções em .cvsrc– Exemplos úteis: checkout –P, update –Pd; perigo:

remove –f

• Opções globais:– Se a linha começa com o comando cvs, a opção é global– Exemplo útil: cvs –z3; cuidado: cvs –d /cvsrep