Controlando projetos com o fantástico CVS

Este artigo nos apresenta ao CVS, um fantástico sistema de controle de versão. Aqui aprenderemos a instalar e configurar um repositório, alimentar o repositório com arquivos, manipular os arquivos lá publicados e por fim, faremos um tour pelos clientes gráficos de CVS, aprendendo a instalar e configurar clientes para Linux, Windows e Mac.

[ Hits: 124.568 ]

Por: Fábio Berbert de Paula em 13/07/2004 | Blog: https://fabio.automatizando.dev


Configuração do servidor CVS



Antes de iniciar a configuração, precisamos obter e instalar o CVS. Utilizei a distribuição Debian para escrever este artigo, portanto se você também a utiliza, pode instalar os pacotes necessários com o seguinte comando:

# apt-get install cvs

Caso contrário, use seu gerenciador de pacotes predileto ou baixe o código-fonte do software direto de seu site oficial:
O CVS funciona como um serviço no Linux. Para utilizá-lo você precisa se certificar de que o acesso a porta 2401 esteja liberado.

NOTA: por padrão essa porta já vem liberada, mas em ambientes corporativos é comum encontrarmos os acessos bloqueados.

O programa responsável pela inicialização do CVS é o inetd, você encontrará uma entrada parecida com a abaixo no arquivo /etc/inetd.conf:

cvspserver      stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/cvs-pserver

Portanto não estranhe a ausência de um script de inicialização do CVS em sua distribuição, pois é o inetd quem o executa.

Agora que temos o serviço instalado, é hora de configurá-lo. Edite o arquivo /etc/cvs-pserver.conf e mude o parâmetro CVS_PSERV_REPOS de acordo com suas preferências:

CVS_PSERV_REPOS="/var/lib/cvs"
CVS_PSERV_LIMIT_MEM=hard
CVS_PSERV_LIMIT_DATA=hard
CVS_PSERV_LIMIT_CORE=0
CVS_PSERV_LIMIT_CPU=hard

Nesse caso, /var/lib/cvs é o raíz do nosso repositório CVS. Você pode especificar quantos repositórios quiser, para isso basta separar os diretórios por "," (vírgula).

Verifique se o diretório escolhido existe e se suas permissões estão corretas. Para criar um repositório, use a seguinte seqüência de comandos:

# mkdir /var/lib/cvs
# chown root.src /var/lib/cvs
# chmod 775 /var/lib/cvs
# chmod g+s /var/lib/cvs


Verifique as permissões de acesso (drwxrwsr-x) com o comando:

$ ls -lhd /var/lib/cvs
drwxrwsr-x   2 root  src    4.0K Jul 13 07:07 /var/lib/cvs

Note que o dono e o grupo do arquivo são, respectivamente, root e src. Utilizamos o gid bit para o grupo src (chmod g+s /var/lib/cvs), o que faz com que todos os usuários que pertencem a este grupo possam modificar os arquivos do diretório. Dessa forma, para dar permissão de acesso (escrita inclusive) a um usuário cadastrado no sistema (/etc/passwd), basta adicioná-lo ao grupo src.

Vamos a um exemplo prático. Queremos fazer com que o usuário carachata tenha acesso de escrita ao nosso repositório CVS:

# addgroup carachata src

Agora que tudo parece nos devidos conformes, vamos inicializar este repositório:

# cvs -d /var/lib/cvs init

Isso criará o diretório /var/lib/cvs/CVSROOT. Repita o comando "init" para cada repositório que você definiu em /etc/cvs-pserver.conf.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Configuração do servidor CVS
   3. Enviando os arquivos para o servidor CVS
   4. Manuseando arquivos
   5. Clientes gráficos
Outros artigos deste autor

Verificando integridade de servidores POP com PHP/sockets

SQL Dicas & Truques (versão 0.1)

Edital de política de contribuição de artigos

Desbloquear a tela do Android pelo PC (PIN)

Criando gráficos com a classe JPGraph (parte 1)

Leitura recomendada

Sistema de arquivos distribuídos usando Gmail

Alta disponibilidade ISCSI e Multipath - RedHat

SSHFS no CentOS, Slackware e Windows - Simples e rápido

ZFS no GNU/Linux

Explorando NFS mal configurado

  
Comentários
[1] Comentário enviado por wronieri em 13/07/2004 - 10:36h

Excelente artigo vai ser de grande utilidade para o meu TCC da faculdade ;-)

[2] Comentário enviado por agk em 13/07/2004 - 14:27h

Parabéns Fabio, muito bom o artigo, não sabia que o cvs era tão poderoso para controlar meus projetos, alterações e tudo mais. Vou instalar aqui e começar a usar, acho que isso vai me ser muito útil para controlar os projetos que estou fazendo no trabalho e preciso ver alguma coisa em casa ou terminar.
Valeu D+ o artigo.
[ ]'s.

[3] Comentário enviado por jeffestanislau em 13/07/2004 - 18:03h

Hehehe.. grande fábio..
Seu pensamento sempre adiante em relação aos pequenos mortais... rs rs rs

Párabens!!!
[]´s


[4] Comentário enviado por thiagosc em 14/07/2004 - 07:42h

Muito bom mesmo esse artigo, ontem mesmo estava trocando uma idéia com o Jeffestanislau sobre esse assunto, e hoje vejo esse excelente artigo no site. Parabéns.

[5] Comentário enviado por renatoriolino em 14/07/2004 - 13:55h

Ótimo artigo, parabéns!

Só uma pergunta:

O que aconteceria se duas pessoas alterassem o mesmo arquivo fonte?

Tipo, a primeira iria fazer o update e tudo beleza, mas e quanto a segunda? O arquivo alterado pela segunda pessoa iria sobrescrever as alterações feitas pela primeira?

[]'s

Renato

[6] Comentário enviado por Czuber em 14/07/2004 - 15:34h

Legal, gostei bastante do artigo, eu vi que dá para acessar por ssh também, se alguém quiser conferir:

$ export CVS_RSH=ssh
$ cvs -z3 -d:ext:login@10.0.0.1:/var/lib/cvs co modulename

Pena que eu preciso me conectar em um servidor cvs e não consigo de jeito nenhum!
Sempre dá timeout depois que eu ponho a senha!
[]s

[7] Comentário enviado por wronieri em 15/07/2004 - 10:45h

Fabio instalei o gcvs o pacote não acusou nenhuma dependencia mas ao executar á o seguinte erro "gcvs: error while loading shared libraries: libtcl.so.0: cannot open shared object file: No such file or directory" estaria faltando este libtcl ou seria outro problema?

[8] Comentário enviado por fabio em 15/07/2004 - 17:58h

Renato,

O que acontece é que o CVS, antes de sobrescrever o arquivo que foi atualizado por outra pessoa, te acusa essa mensagem e exibe as diferenças entre as versões usando o diff. A partir daí, se você quiser pode realmente sobrescrever o arquivo ou criar uma nova versão pra ele baseado nas mostras do diff.

[]'s

[9] Comentário enviado por fabio em 15/07/2004 - 18:01h

Ronieri,

Você precisa ter o TCL instalado, mais precisamente o pacote tclx.x-dev. Se já o tiver instalado, pode estar acontecendo um problema de link. Entre em /usr/lib e veja se existe o arquivo libtclx.x.so, daí basta criar um link para o arquivo que está faltando assim:

ln -s libtclx.x.so libtcl.so

[]'s

[10] Comentário enviado por tchebraga em 16/07/2004 - 09:40h

Parabéns muito legal o artigo, e é impresionante como tem gente que ainda nem sabe o que é controle de versão, mas isso é outro assunto. O cvs é um projeto muito bom e útil, no entanto bem antigo e possui algumas deficiências, como não garantir transações atômicas e não permitir renomear repositorios. Existe O subversion (http://subversion.tigris.org) que chegou a versão 1.0 e está muito estável, vale resaltar que é 1.0 mas teve vários RC´s antes disso, o que garantiu a estabilidade do produto, pode se disser que é uma continuação do bom e velho CVS. Vale a pena mesmo dar uma olhada no subversion.

[11] Comentário enviado por dudous em 16/07/2004 - 12:10h

Parabéns pelo artigo! Bastante elucidativo.
E boa dica essa do subversion !
Não conhecia. Estou dando uma olhada agora.

[12] Comentário enviado por renatoriolino em 16/07/2004 - 17:01h

Fabio,

Obrigado pela resposta. Mais uma coisinha:

O CVS serve para manter arquivos binários também? Ou apenas arquivos texto?

Obrigado.

[]'s

Renato

[13] Comentário enviado por fabio em 16/07/2004 - 23:10h

Renato,

Qualquer tipo de arquivo, desde txt até imagens.

[]'s

[14] Comentário enviado por cesarcardoso em 18/07/2004 - 15:38h

Só lembrando que em arquivos binários o CVS só consegue dizer quando foi modificado, não o que foi modificado.

[15] Comentário enviado por tchebraga em 19/07/2004 - 09:56h

+ uma coisa bacana do subversion, :-) ele permite controlar arquivos binários tb :-) (fazer diff inclussive).

[16] Comentário enviado por MarcioRM em 19/07/2004 - 10:23h

Soh para acrescentar outra interface eh o LinCVS (www.lincvs.org)
Na minha opiniao a melhor :D

Falow

[17] Comentário enviado por jeff.chaves em 29/07/2004 - 16:31h

É isso ai, esse artigo é maravilhoso, mas na empresa que trabalho o servidor é Widows, como faço para configura-lo e etc???

[18] Comentário enviado por AndreC em 02/08/2004 - 13:00h

Muito bacana o artigo! Só estou tendo problemas para configurar
o Servidor de CVS no Fedora...

Não consegui encontrar os arquivos: inetd.conf e cvs-pserver.conf

Estou com a versão 1.11.17 instalada...

Alguém já conseguiu configarar no Fedora Core 2?

[19] Comentário enviado por clicksoft em 10/08/2004 - 17:46h

Ola , instalei o CVS no kurumin como o artigo ensina, instalei o gcvs, rodei o gcvs na mesma maquina (servidor) configurei "cjunior@192.168.0.1:/var/lib/cvs" .
Porém ao tentar efetuar o login acontece o seguinte erro :

********************
cvs login
cvs login: /var/lib/cvs/CVSROOT/config: unrecognized keyword 'UseNewInfoFmtStrings'
cvs login: can only use pserver method with `login' command
cvs [login aborted]: CVSROOT: /var/lib/cvs
*********************

alguem poderia me ajudar ???
obrigado ,
carlos junior
cjuniorig@ig.com.br

[20] Comentário enviado por engos em 24/08/2004 - 15:34h

Estou tentando configurar no Red Hat 9 e estou com o mesmo problema do AndreC... em qual distro essa configuração funciona?

[21] Comentário enviado por alphainfo em 14/09/2004 - 12:17h

Ei Rapaziada do VOL!

Gostaria apenas de comentar q existem outros clientes gráficos bons para o CVS, como o Eclipse.

[]'s

Daniel Freire

[22] Comentário enviado por fernandoamador em 16/01/2005 - 05:47h

Ótimo artigo.

[23] Comentário enviado por josir em 17/02/2005 - 17:26h

Valeu Fábio. Me ajudou bastante!
Josir

[24] Comentário enviado por kamarada10 em 03/03/2005 - 08:42h

No caso de arquivos binários, o cvs faz uma auditoria informando além de qdo foi modificado quem efetuou a modificação? No caso de arquivos de cocumentação de projetos (.doc) é considerado binário também?

[25] Comentário enviado por removido em 28/04/2005 - 14:08h

fabio, ficou show de bola!
parabens mais uma vez

[26] Comentário enviado por jmarceno em 02/05/2005 - 14:25h

Muito bom o artigo, eu sempre quis saber do que se tratava este tão falado CVS e vc conseguiu sanar todas as minhas dúvidas...Parabéns...

[27] Comentário enviado por kandrus em 08/05/2005 - 08:21h

Valew pelo artigo tava apanhando para implantar o CVS no linux e com o artigo consegui blz

Valew

[28] Comentário enviado por osvaldocpd em 10/05/2005 - 11:22h

bom dia a todos, Alguem poderia me enviar passo a passo como configurar Servidor PDC tebnho o linux 7.3 e as stações é 98 2.000 e xp preciso que as estações acessam arquivos no sevidor linux
Se algume souber e poder me passar ficarei grato
at. Osvaldo

[29] Comentário enviado por alesandroramos em 07/06/2005 - 16:40h

Parabens Fabio, o artigo foi uma mao na roda Fabio + alguem pode me dizer de onde veio esse erro
CONNECTION REFUSED

[30] Comentário enviado por a.fernando em 28/10/2005 - 10:15h

Ótimo artigo!

Me ajudou bastante a entender como funciona e onde usar o CVS

[31] Comentário enviado por FelipeAbella em 16/07/2006 - 20:31h

renatoriolino: Se duas pessoas editarem o mesmo arquivo, o cvs irá mesclar os dois, mas as vezes gera um conflito, nunca testei como resolve um conflito.

Parabéns pelo artigo.

[32] Comentário enviado por arcanjo_mg em 24/07/2006 - 17:33h

Parabéns, artigo muito bom, CVS é algo que eu ja queria conhecer mais ainda estava obscuro pra mim. Esse artigo sera um ponta-pé inicial para que eu aprenda mais sobre o assunto.

[]'s

[33] Comentário enviado por removido em 12/08/2006 - 15:02h

esta 10 o artigo, parabens

[34] Comentário enviado por xALEXANDRE em 15/08/2006 - 19:48h

Muito bom.
Parabéns, artigo completo e objetivo.

[35] Comentário enviado por diromi em 29/12/2006 - 22:34h

Fabio muito bom seu artigo!!!
Gostaria de saber se vc sabe como faço para o CVS colocar a senha do CVS automaticamente a mesma senha que o usuario tem no Active Diretory do Windows de forma a melhorar a segurança não to conseguindo fazer isso e queria uma dica se fosse possivel..
Meu e-mail diromi@oi.com.br
Valeu
Diogo

[36] Comentário enviado por stalin em 06/03/2008 - 10:09h

Eu instalei o cvs pelo terminal passo-passo, quando eu vou testa no Eclipse da erro de conexão, o que eu devo fazer?

Valeu

[37] Comentário enviado por stalin em 07/03/2008 - 11:38h

Quando eu executo: teste@test-4:/home/cvs$ cvs -d :pserver:diogo@127.0.0.1:/home/cvs

Oque devo fazer

Usage: cvs [cvs-options] command [command-options-and-arguments]
where cvs-options are -q, -n, etc.
(specify --help-options for a list of options)
where command is add, admin, etc.
(specify --help-commands for a list of commands
or --help-synonyms for a list of command synonyms)
where command-options-and-arguments depend on the specific command
(specify -H followed by a command name for command-specific help)
Specify --help to receive this message

The Concurrent Versions System (CVS) is a tool for version control.
For CVS updates and additional information, see
the CVS home page at http://www.nongnu.org/cvs/ or
the CVSNT home page at http://www.cvsnt.org/

[38] Comentário enviado por stalin em 11/03/2008 - 09:14h

Vc acha que eu devo desabilitar o firewall para usar o cvs

[39] Comentário enviado por stalin em 11/03/2008 - 09:20h

quando eu coloco

diogo@Test/var/lib/cvs$ export CVSROOT=:pserver:diogo@127.0.0.1:/var/lib/cvs
diogo@Test:/var/lib/cvs$ cvs login
Logging in to :pserver:diogo@127.0.0.1:2401/var/lib/cvs
CVS password:
cvs [login aborted]: unrecognized auth response from 127.0.0.1: cvs [pserver aborted]: /var/lib/cvs: no such repository

O que eu devo fazer

[40] Comentário enviado por luizhacker em 08/05/2008 - 11:56h

Ao tentar obter ao diretório para manipulação dos arquivos de um projeto, usando a conta Root, obtive a seguinte mensagem:
"root not alowed"

Como usuário comum isso não acontece.

O que devo fazer?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts