CVS - Guia de Consulta Rápida

Page 1

Guia de Consulta Rรกpida

CVS Marden Neubert

Novatec Editora


Copyright  2004 da Novatec Editora Ltda.

Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: RUBENS PRATES

ISBN: 85-7522-056-X

NOVATEC EDITORA LTDA. Rua Cons. Moreira de Barros 1084 – Conj. 01 02018-012 São Paulo SP – Brasil Tel.: +55 11 6959-6529 Fax: +55 11 6950-8869 E-mail: novatec@novateceditora.com.br Site: www.novateceditora.com.br

2


Sumário Introdução ............................................................................... 5 Convenções ...................................................................... 5 Versão do CVS utilizada neste guia .......................... 6 Referências Bibliográficas ........................................... 6 Sobre o autor .................................................................... 6 Estrutura geral dos comandos CVS .......................... 7 Comandos CVS ...................................................................... 8 Opções de Comandos CVS ............................................. 44 Opções Globais ............................................................ 44 Opções Comuns ........................................................... 46 Recursos Adicionais ........................................................... 48 String de Conexão ao Repositório ......................... 48 Substituição de Palavras-Chave ............................... 49 Arquivos do CVS ................................................................. 52 Arquivos Administrativos do Repositório ........... 52 Relação dos arquivos administrativos ............ 54 Arquivos de Configuração do Cliente CVS ......... 64 Arquivos de Controle da Área de Trabalho ........ 66 Variáveis de Ambiente ...................................................... 68 Conceitos Relacionados ao CVS .................................... 70 Conceitos Básicos ........................................................ 70 Controle de versão de software ........................ 70 Repositório ............................................................... 70 Módulo ....................................................................... 70 Área de trabalho ..................................................... 71 Revisão ....................................................................... 71 Liberação ................................................................... 71 Etiqueta ...................................................................... 72 Linha de código ...................................................... 72 Check-out ................................................................. 73 Check-in .................................................................... 73 Merge .......................................................................... 73 Conflito ...................................................................... 74 Conceitos Específicos do CVS ................................. 74 Arquivos de histórico ........................................... 74 Opções aderentes .................................................. 74 Palavras-chave ........................................................ 75 Comportamento recursivo ................................. 75 Arquivos ignorados ............................................... 75 Wrappers ................................................................... 76 Arquivos observados ............................................ 76 Índice Remissivo ........................................................... 77

3


4


Introdução

Introdução Este guia é uma referência rápida para o CVS, o popular sistema de controle de versões. Ele contém descrições dos comandos do sistema e referências para arquivos de configuração e variáveis de ambiente. Além de ser uma ferramenta para consulta, o guia explica conceitos básicos sobre o CVS e controle de versão de software em geral. Uma referência mais detalhada para o CVS é [Caetano]. O CVS é um sistema de controle de versões, usado para se registrar o histórico de modificações de arquivos. Inicialmente criado por Dick Grune em 1986 como um conjunto de scripts para facilitar o uso do RCS, o CVS começou a ser reescrito na linguagem C em 1989 por Brian Berliner. Hoje o CVS é um software livre, de uso gratuito e mantido pela Free Software Foundation. Além da tradicional linha de comando, existem hoje diversas interfaces gráficas para o CVS, como listado em [CVSHome]. Muitas ferramentas integradas (IDEs) também oferecem recursos visuais para o uso do CVS. As descrições de comandos, arquivos e configurações feitas neste guia se aplicam tanto para o uso por interfaces gráficas quanto por linha de comando.

Convenções As seguintes convenções tipográficas são utilizadas neste guia:

Item

Descrição

texto

Significa que o texto deve ser digitado literalmente, isto é, assim como está no manual. Representa um texto variável, isto é, algo que você deve preencher. Significa que o texto dentro dos colchetes é opcional. Representa opções, isto é, você deve escolher uma das opções (texto1 ou texto2). Representa multiplicidade, isto é, texto pode ser digitado uma ou mais vezes.

texto [ texto ] texto1 | texto2 texto ...

As convenções Por exemplo:

podem

ser

combinadas.

cvs --help [ comando ]

cvs --help Significa que o texto “cvs --help” deve ser digitado da forma mostrada, seguido por um espaço e, opcionalmente, um comando qualquer.

5


Introdução

Versão do CVS utilizada neste guia Este guia é baseado na versão 1.11 do CVS. Entretanto, o leitor poderá utilizá-lo para versões futuras, pois o CVS é bastante estável e as alterações recentes são voltadas para correção de pequenos defeitos e melhorias internas. Em relação a versões anteriores, recomenda-se utilizar uma versão igual ou superior à 1.9.

Referências Bibliográficas [Berliner]

Brian Berliner. CVS II: Parallelizing Software Development. Prisma, Inc.

[Caetano]

Cristiano Caetano. CVS: Controle de Versões e Desenvolvimento Colaborativo de Software. Novatec, 2004.

[Cederqvist] Cederqvist et al. Version Management with CVS. http://www.cvshome.org/manual [Diff]

diff. Manual do utilitário diff http://www.gnu.org/software/diffutils/ manual/html_node/index.html

[GNU]

Free Software Foundation (FSF).

[GSSAPI]

J. Linn. “RFC 2743 - Generic Security Service Application Program Interface Version 2, Update 1”.

http://www.gnu.org

http://www.faqs.org/rfcs/rfc2743.html [Kerberos] MIT. “Kerberos: The Authentication Protocol”.

Network

http://web.mit.edu/kerberos/www/ [CVSHome] Site da comunidade CVS. http://www.cvshome.org

Sobre o autor Marden Neubert é Bacharel e Mestre em Ciência da Computação pela UFMG (Universidade Federal de Minas Gerais). Trabalhou como desenvolvedor e arquiteto de software no Universo Online (UOL) e hoje atua como gerente de desenvolvimento em empresas da área financeira.

6


Introdução

Estrutura geral dos comandos CVS Todos os comandos CVS seguem uma estrutura comum, mostrada a seguir. cvs [ opções_globais ... ] comando [ opções_comando ... ] [ argumentos_comando ... ]

Parâmetro

Descrição

opções_globais

São aplicáveis a todos os comandos CVS. Veja Opções Globais na página 44. comando Um dos diversos comandos descritos ao longo deste guia. opções_comando Opções específicas do comando em uso. Algumas opções são reconhecidas por vários comandos, veja Opções Comuns na página 46. argumentos_comando São geralmente arquivos, diretórios e módulos sobre os quais o comando opera.

Este guia descreve os comandos CVS da seguinte forma. Para cada comando, nomes alternativos são apresentados em sobresccrito e entre parênteses. Após a descrição é dada a sintaxe do comando e duas informações importantes: os recursos que o comando utiliza (devem estar presentes para que ica ele execute) e aqueles que ele modif modifica ica.

7


Comandos CVS

Comandos CVS Esta seção descreve os comandos CVS, suas opções e argumentos.

add (ad, new) Adiciona novos arquivos ou diretórios ao repositório. add [ opções ... ] [ arquivos ... ] Utiliza:

Cópia de trabalho, repositório

Modifica:

Cópia de trabalho

O CVS inspeciona o repositório, mas não adiciona efetivamente o arquivo ou diretório até que seja realizado um check-in pelo comando commit commit. Ao contrário da maioria dos comandos, add não possui comportamento recursivo, isto é, só é possível adicionar arquivos no diretório corrente.

Opção

Descrição

-kind

Especifica que o arquivo deve ser armazenado com modo default de substituição de palavras-chave especificado pelo indicador -k ind (ver página 50). Usa msg como mensagem de criação do arquivo. Esta mensagem é única por arquivo, ao contrário da mensagem de log, que é especificada para cada alteração do arquivo no repositório, pela opção -m do comando commit.

-m msg

admin (adm, rcs) Realiza diversas tarefas administrativas no repositório, a maioria relacionada à manipulação de arquivos de histórico. admin [ opções ... ] [ arquivos ... ] Utiliza:

Cópia de trabalho, repositório

Modifica:

Repositório

Como a maioria dos comandos CVS, admin tem comportamento recursivo. Porém, as operações administrativas em geral se aplicam a um ou poucos arquivos. Logo, deve-se tomar cuidado com o uso de admin e procurar sempre especificar os arquivos como argumento. Muitas das tarefas realizadas por admin são obsoletas e possuem alternativas melhores. Outras não produzem mais efeito e são mantidas apenas por compatibilidade.

8


Comandos CVS Opção

Descrição

-Aarquivo_antigo Adiciona a lista de acesso RCS do arquivo antigo à lista de acesso dos arquivos especificados. As versões atuais do CVS ignoram as listas de acesso RCS, de forma que esta opção é obsoleta e não produz efeito. -ausr1[,usr2...] Adiciona os usuários especificados à lista de acesso dos arquivos presentes no argumento. Esta opção é obsoleta e não produz efeito. -brev Define rev (número de revisão ou etiqueta) como a última revisão dos arquivos no branch default. Não há espaço entre -b e rev. Esta opção é útil para reverter os fontes de um módulo para a última liberação de um branch de fornecedor. Uma observação importante: se rev é uma etiqueta e não está aplicada sobre um arquivo, este não existirá mais no seu branch default, o que é equivalente a ser removido. -cstring Define string como o prefixo de comentário. As versões recentes do CVS não utilizam esse parâmetro, portanto, esta opção é obsoleta e não tem efeito. -eusr1[,usr2...] Remove os usuários especificados da lista de acesso dos arquivos presentes no argumento. Esta opção é obsoleta e não produz efeito. -I Executa interativamente, mesmo que a entrada padrão não seja um terminal. Esta opção é obsoleta e não tem efeito algum. -i Cria e inicializa um novo arquivo RCS sem criar uma revisão. Esta opção é obsoleta; deve-se usar o comando add para adicionar arquivos. -kind Define o modo default de substituição de palavras-chave dos arquivos especificados como argumento. Os arquivos passam a ter o modo default especificado por ind, como se tivessem sido adicionados com esse modo pelo parâmetro -k do comando add. Para mais informações veja Indicadores-k na página 50. -L Define o modo de travamento do arquivo como restritivo. Com isso, um usuário deve travar o arquivo para realizar o check-in de uma nova revisão. Apenas um usuário pode ter a trava de um arquivo em um dado instante. O uso desta opção muda o comportamento original do CVS, impedindo o desenvolvimento paralelo. Mais detalhes no conceito de Check-out, pág. 73. -l[rev] Travaarevisãorev.Searevisão rev fornumérica ou simbólica, ela é travada; se for um branch, a última revisão do branch é travada; se rev não for especificada, a última revisão do branch default é travada. Não pode haver espaço entre -l e rev. Essa opção, em conjunto com -L, muda a forma de funcionamento do CVS. 9


Comandos CVS -mrev:msg

Substitui a mensagem de log de rev pela nova mensagem msg. Não pode haver espaços entre -m e os parâmetros e nem em torno dos dois pontos. Caso a mensagem tenha espaços, ela deve estar envolvida em aspas. -Nnome[:[rev]] Permite a edição (assinalamento, renomeação e remoção) de etiquetas. Não há espaço entre -N e o parâmetro, nem em torno dos dois pontos. Se já existe uma etiqueta chamada nome associada ao arquivo, ela é movida para a revisão especificada. Esta opção é obsoleta, sendo preferível utilizar os comandos tag ou rtag. O funcionamento depende do formato do parâmetro, descrito a seguir. nome A etiqueta chamada nome é removida. nome: A etiqueta nome é atribuída à última revisão do branch default. nome:rev A etiqueta nome é associada à revisão rev, que pode ser numérica ou simbólica. nome:branch. Quando rev é um nome ou número de branch seguidodeponto“.”,aetiquetanome éassociada à última revisão do branch. nome:$ A etiqueta nome é associada aos números de revisão extraídos das palavras-chave encontradas nos arquivos de trabalho. -nnome[:[rev]] Idêntica à opção -N, mas, caso a etiqueta nome já esteja associada ao arquivo, o comando termina em erro. Também é obsoleta. -ointervalo Remove as revisões especificadas pelo intervalo. Este comando é perigoso, pois revisõesremovidasnãopodemserrecuperadas. Seu único propósito é economizar espaço no repositório, o que só se justifica em casos de arquivos binários muito grandes e com muitas revisões. A seguir são descritas formas válidas para intervalo. Observação: se for usada uma expressão com “::” e uma das revisões afetadas tiver uma etiqueta associada, nenhuma revisão será removida. rev1::rev2 Elimina todas as revisões entre rev1 e rev2, de forma que o histórico de revisões do arquivo passa diretamente de rev1 para rev2. Como as revisões intermediárias são removidas, passa a existir um “buraco” entre os números de revisão rev1 e rev2. Exemplo: -o1.3::1.6 remove as revisões 1.4 e 1.5, mas -o1.3::1.4 e -o1.3::1.3 não produzem efeito. rev1:rev2 Elimina todas as revisões de rev1 a rev2, inclusive. Exemplo: -o1.3::1.6 remove as revisões de 1.3 a 1.6, -o1.3::1.4 remove 1.3 e 1.4 e -o1.3::1.3 remove somente 1.3.

10


Comandos CVS ::rev

:rev

rev::

rev:

rev -q -sestado[:rev]

-t[arquivo]

-t-msg

-U

Remove todas as revisões entre o início do branch onde está a revisão rev e a própria, que é preservada. Exemplo: -o::1.2.3.4 remove as revisões de 1.2.3.1 a 1.2.3.3, mas preserva 1.2 e 1.2.3.4. Remove todas as revisões entre o início do branch onde está a revisão rev e a própria, que tambéméremovida.Exemplo:-o:1.2.3.4remove as revisões de 1.2.3.1 a 1.2.3.4, preservando 1.2. Remove todas as revisões desde rev e o fim do branch onde ela se encontra. A revisão rev é preservada e passa a ser a última do branch. Exemplo: -o1.2:: remove todas as revisões do tronco principal, exceto 1.1 e 1.2. Remove todas as revisões desde rev até o fim do branch onde ela se encontra. A revisão rev é removida. Exemplo: -o1.2: remove todas as revisões do tronco principal, exceto 1.1. Remove a revisão rev. Exemplo: -o1.5 é equivalente a -o1.4::1.6. Executa silenciosamente; tem a mesma função da opção global -q. Define o estado da revisão rev como o valor da string estado. Se rev for uma revisão numérica ou simbólica, ela é utilizada; se for um nome ou número de branch, usa-se a última revisão do branch; se for omitida, usa-se a última revisão do branch default. O valor da string estado é livre; os mais utilizados são Exp significando “experimental”, Stab para “estável” e Rel para “liberado”. O único valor reservado pelo CVS é dead. O estado de uma revisão pode ser exibido pelocomando logepelaspalavras-chave $Log$ e $State$. Substitui a mensagem de criação do arquivo pelo conteúdo de arquivo. Não pode haver espaço entre -t e o nome do arquivo, que não pode começar com um hífen. Caso este não seja especificado, o comando lê da entrada padrão, terminando com uma linha contendo somente um ponto final. Substitui a mensagem de criação do arquivo por msg. Deve haver um hífen entre -t e msg, que precisa ser incluída entre aspas se contiver espaços. Define o modo de travamento do arquivo como não restritivo. Isso quer dizer que um usuário não precisa travar um arquivo para realizar o check-in de uma nova versão. Este é o comportamento default; esta opção desfaz um uso anterior da opção -L.

11


Comandos CVS -u[rev]

-Vversão_rcs

-xsufixo

Destrava a revisão rev. Se a revisão for numérica ou simbólica, ela é destravada; se for um branch, a última revisão do branch é destravada; se rev não for especificada, a última revisão do branch default é destravada. Se uma trava for desfeita por um usuário diferente daquele que a criou, uma notificação é enviada para o criador. Não pode haver espaço entre -u e rev. Opçãoobsoletacujoobjetivoeraescreverarquivos quepudessemserlidosporumaversãoespecífica do RCS. Nas versões mais recentes do CVS, essa opção produz um erro. Esta opção obsoleta permitia modificar a extensão dos arquivos RCS (que originalmente é ,v). Entretanto, em versões recentes, essa opção não produz efeito.

annotate (ann) Exibe, para cada linha dos arquivos especificados, qual a última revisão em que a linha foi alterada, quem criou essa revisão e quando. annotate [ opções ... ] [ arquivos ... ] Utiliza:

Cópia de trabalho, repositório

Modifica:

Nada

Opção

Descrição

-D data -F

Anota a revisão existente na data especificada. Força com que arquivos binários sejam anotados. Caso esta opção não seja especificada, arquivos binários são ignorados pelo comando. Anota a última revisão do arquivo, caso seja especificada uma etiqueta ou data não encontrada. Executa apenas para os arquivos no diretório local, isto é, inibe o comportamento recursivo. Executa de forma recursiva (o comportamento default). Esta opção é usada para sobrepor uma opção -l no arquivo .cvsrc. Anota a revisão especificada por rev, que pode ser um número de revisão ou uma etiqueta.

-f -l -R

-r rev

checkout (co, get) Obtém uma cópia dos arquivos no repositório, criando ou atualiza uma cópia de trabalho com arquivos contidos nos módulos especificados. A cópia local é criada se ainda não existe e atualizada caso contrário (neste caso, o comando update é mais utilizado). checkout [ opções ... ] módulos ...

12

Utiliza:

Repositório

Modifica:

Cópia de trabalho


Comandos CVS Para cada módulo especificado, checkout cria um diretório e, dentro dele, uma estrutura igual ao módulo. É possível solicitar o check-out de um caminho dentro de um módulo ou até de um único arquivo. Nestes casos, apenas o diretório ou arquivo é criado na cópia local. Cada usuário pode editar os arquivos de forma independente e realizar check-in de alterações. Os arquivos criados têm permissão para leitura e escrita, a não ser que a opção global -r seja especificada. A saída produzida por checkout é a mesma do comando update update.

Opção

Descrição

-A

Remove qualquer opção aderente (etiqueta, data ou indicador-k).Estaopçãosófazsentidoquandoseestá atualizando o repositório e, logo, é mais utilizada com ocomandoupdate.Opçõesaderentessãoexplicadas na página 74 e indicadores-k, na página 50. Não realiza check-out. Apenas imprime o conteúdo arquivo administrativo modules, em ordem alfabética, na saída padrão. Realiza o check-out das revisões existentes na data especificada. Esta opção é aderente e não será possível realizar o check-in de modificações na cópia de trabalho sem que ela seja removida pela opção -A. Quando usada, a opção -P é implícita. Cria a cópia de trabalho dentro do diretório dir. Sem esta opção, checkout cria a cópia de trabalho dentro de um diretório com o mesmo nome do módulo. Ela é mais útil quando se passa como argumento um diretório interno ou um arquivo dentro de um módulo. Nesse caso, checkout não cria todo o caminho dentro do módulo, mas apenas dir, contendo diretamente o diretório interno ou o arquivo solicitado. Obtém a última revisão do arquivo, caso seja especificada uma etiqueta ou data não encontrada. Esta opção pode ser usada para forçar o check-out de todos os arquivos no repositório, mesmo que uma revisão passada pela opção -r ou uma data passada por -D não seja encontrada em alguns arquivos. Efetua merge de alterações. Esta opção somente faz sentido quando se está utilizando checkout para se atualizar a cópia de trabalho, portanto, é mais comum com o comando update. Veja a descrição da opção -j do comando update. Processa palavras-chave de acordo com o indicador ind. Esta opção é aderente e define o modo local de substituição de palavras-chave dos arquivos atualizados. Futuras operações na cópia local respeitarão esse indicador-k (ver pág. 50) até que ele seja removida pela opção -A.

-c

-D data

-d dir

-f

-j rev

-k ind

13


Comandos CVS -l

-N

-n

-P -p

-R

-r rev

-s

Inibe o comportamento recursivo. Esta opção faz com que apenas arquivos no primeiro nível do módulo (ou em um caminho dentro do módulo) sejam trazidos para a cópia local, sem processar subdiretórios. Força com que o CVS crie todo o caminho dentro do módulo até o diretório interno ou arquivo especificado para checkout. Somente é útil com a opção -d. Não executa nenhum programa de módulo. Programas a serem executados no check-out são definidos pela opção -o no arquivo administrativo modules. Remove diretórios vazios da cópia de trabalho. Normalmente utilizada com o comando update. Realizaocheck-outparaasaídapadrãodocomando, não criando nenhum arquivo. Normalmente utilizada com o comando update. Opera de forma recursiva. Realiza o check-out de subdiretórios dentro dos módulos especificados. Este é o comportamento default. Realiza o check-out das revisões especificadas por rev. Esta opção é aderente e implica na opção -P. O uso mais típico desta opção com checkout é quando rev é um branch ou uma etiqueta; não faz sentido que rev seja uma revisão numérica. Assim como a opção -c, não realiza check-out. Imprime as entradas do arquivo administrativo modules, incluindo o status de cada módulo e ordenando-os pelo status.

commit (ci, com) Efetiva mudanças no repositório, propagando as mudanças realizadas em arquivos da cópia local, criando novas revisões dos arquivos alterados e disponibilizando-as para os demais usuários. commit [ opções ... ] [ arquivos ... ] Utiliza:

Cópia de trabalho, repositório

Modifica:

Repositório

commit examina arquivos e diretórios na cópia local. Para cada arquivo, o comando verifica se ele sofreu alteração e, caso afirmativo, efetiva a mudança no repositório, criando uma nova revisão. Diretórios são processados recursivamente por default. Se commit inspecionar um arquivo desatualizado, imprimirá uma mensagem e não realizará o checkin. O usuário deverá atualizar sua cópia local pelo comando update update. Caso algum arquivo desatualizado tenha nova revisão no repositório, um merge será realizado. 14


Comandos CVS Ao efetivar as mudanças, commit utiliza como mensagem de log o parâmetro da opção -m ou -F -F. Se nenhuma destas for especificada, commit invoca um editor de textos.

Opção

Descrição

-F arq

Lê a mensagem de log do arquivo arq. Não pode ser combinada com a opção -m. Força o check-in de todos arquivos especificados, mesmo os não alterados. Esta opção implica a opção-l,istoé,desabilitaocomportamentorecursivo, que pode ser forçado com a opção -R. Inibe o comportamento recursivo. Realiza o checkin apenas de arquivos no diretório corrente. Usa msg como mensagem de log. Não pode ser combinada com a opção -F. Não executa nenhum programa de módulo. Programas a serem executados com commit são definidos pela opção -i no arquivo administrativo modules. Opera de forma recursiva. Realiza o check-in de arquivos em subdiretórios do diretório corrente. Este é o comportamento default. Realiza o check-in sobre a revisão rev. A opção -f é implícita, isto é, uma nova revisão é criada mesmo que não haja alterações. rev deve ser um branch ou uma revisão numérica no branch principal que tenha um número maior que qualquer outra revisão existente. Se rev for um branch, a nova revisão criada por commit será a última revisão do arquivo naquele branch. Por exemplo, se for especificado o branch 1.2.3 e a última revisão de um arquivo “File.java” nesse branch for 1.2.3.4, a nova revisão criada por commit será 1.2.3.5. Um branch pode ser especificado tanto por um nome simbólico como por uma revisão numérica. Esta opção é aderente. Se rev for uma revisão numérica, a nova revisão de cada arquivo processado será rev, que deve ser maior que o maior número de revisão dos arquivos processados. Por exemplo, se a maior revisão de “File.java” é 1.5 e rev é 3.0, a nova revisão será 3.0. Se, por outro lado, rev fosse 1.4, commit retornaria um erro.

-f

-l -m msg -n

-R

-r rev

diff (di, dif) Mostra as diferenças entre os conteúdos de duas revisões de um mesmo arquivo. diff [ opções ... ] [ arquivos ... ] Utiliza:

Cópia de trabalho, repositório

Modifica:

Nada

15


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.