preload

ago 26

Hi,

Depois que começamos a programar “de verdade” (corporativamente ou não… rsrs!), percebemos a necessidade de controlar “as versões” do software em questão. Não simplesmente editando e salvando seus ultimos “codes”. É ai que entra o CVS (Concurrent Versions System).

Imagine você terminar aquele projeto/software e no momento da entrega precisar modificar o código, implementar mais alguma função. Tranquilo! Mas depois, percebe que não era bem aquilo que você queria, era melhor deixar do jeito que estava… iii… Neste caso o CVS controla as versões editadas do seu projeto/software permitindo que você possa acessar os antigos códigos. Ótimo!

Outra situação é você desenvolver um software em conjunto com amigos da faculdade e seu “brother” adicionar alguns trechos de códigos “bugados” e ir passear… o que fazer? Ir no CVS e buscar as versões do código antes de seu “brother” ter feito a m*rda! ;)

O que veremos neste post?

- Instalar e configurar o CVS servidor.
- Alguns comando básicos do CVS cliente no próprio linux.

*** Instalando e configurando o CVS

Para este post usei o Debian Lenny. Let´s go…

~$
~$ sudo apt-get install cvs

Depois de instalado o CVS (neste caso ele instala o servidor e cliente), na versão em questão é a 1.12.13 ele cria um repositório padrão em /srv/cvs.

No nosso exemplo vamos apagar o repositório padrão e criar um novo em /home/cvs.

~$
~$ sudo rm -rf /srv

Agora vamos editar o arquivo de configuração principal do cvs: /etc/cvs-pserver.conf

~$
~$ sudo vi /etc/cvs-pserver.conf

CVS_PSERV_REPOS=”/home/cvs”
CVS_PSERV_LIMIT_MEM=hard
CVS_PSERV_LIMIT_DATA=hard
CVS_PSERV_LIMIT_CORE=0
CVS_PSERV_LIMIT_CPU=hard

Neste arquivo modifique a linha CVS_PSERV_REPOS com o diretório do seu repositório de projetos.

Você pode criar mais de um repositório, usando , (vírgula) entre os diretórios:
CVS_PSERV_REPOS=”/home/cvs,/home/meusprojetos”
Neste caso temos 2 repositórios! ;)

Depois de criado o repositório, vamos criar o diretório e efetuar as devidas permissões.

~$
~$ sudo mkdir /home/cvs
~$ sudo chmod -R 775 /home/cvs
~$ sudo chown root:src -R /home/cvs
~$ sudo chmod g+s /home/cvs

1. Criamos o diretório /home/cvs

2. Damos permissão 775 ao diretório do nosso repositório.

3. Setamos o dono root e grupo src para o diretório.

4. Usando o gid bit para o grupo src, assim, todo o usuário do sistema (/etc/passwd) que estiver no grupo src poderão escrever no diretório.

Pronto! Com estas configurações básicas já podemos executar nosso servidor CVS. Mas… o CVS é um serviço que não roda em standalone, assim, ele usa o inetd para executar o serviço. Vamos, então, adicionar as configs do CVS no inetd:

~$
~$ sudo vi /etc/inetd.conf

Adicione a linha abaixo:
cvspserver stream tcp nowait root /usr/sbin/tcpd /usr/sbin/cvs-pserver

~$ sudo /etc/init.d/openbsd-inetd start

Ok! O CVS já está executando via inetd. O CVS usa as portas 2401/tcp e 2401/udp, então – caso necessário -, libere estas portas no seu firewall.

Com o CVS funcionando, vamos criar o base de diretórios e arquivos do nosso repositório em /home/cvs.

~$
~$ cvs -d /home/cvs init

Assim, ele cria o diretório CVSROOT no nosso repositório, contendo as conf necessárias para o mesmo. Vamos ver alguns comandos básicos e como proceder em situações do dia a dia.

Adicionar permissão a um usuário para escrever no repositório:

~$
~$ sudo addgroup usuario src

Conectando remotamente via cvs (no linux/debian):

~$
~$ export CVSROOT=:pserver:usuario@ipdoservidorCVS:/home/cvs
~$ cvs login

Sim, parece estranho. Mas o cliente cvs no linux necessida de uma variável CVSROOT para conectar a um determinado host/servidor. Para simplificar o processo você pode criar a variável CVSROOT no .profile do seu usuário.

Importando um projeto e versionando:

~$
~$ cd /home/bleno/projetos/ListaEncadeada
~$ cvs import ListaEncadeada ProjetoListaEncadeada v1 start

Neste caso, importei o diretório ListaEncadeada usando o nome ProjetoListaEncadeada chamando de versão “v1″. Assim, o diretório local ListaEncadeada foi importado em /home/cvs/ProjetoListaEncadeada no servidor CVS.

O CVS cliente pedirá uma mansagem descritiva sobre seu “import”, você informa a descrição e sai com o um simples :x (by vi editor!).

Vamos supor que depois de 2 dias de trabalho árduo saio a versão “v2″ deste projeto. Para importar a nova versão, conectamos ao servidor CVS como descrito acima e importando a nova versão:

~$
~$ cvs import ListaEncadeada ProjetoListaEncadeada v2

Trabalhando com arquivos no CVS cliente no Linux!

Vamos supor que você está em uma outra máquina e queira um cópia do ProjetoListaEncadeada, simples: conecte-se ao servidor CVS como descrito acima e:

~$
~$ cd /home/outramaquina/projetos
~$ cvs checkout ProjetoListaEncadeada

Assim você tem uma cópia da ultima versão do ProjetoListaEncadeada. Depois de editar o projeto você deseja fazer o upload dos arquivos novos, então:

~$
~$ cvs update

O update faz com que o cvs marque os arquivos locais modificados para depois enviar para o servidor. Depois de marcados com o update:

~$
~$ cvs commit

Pronto, os novos arquivos modificados são enviados para o servidor! Lembre-se que todo o processo usando o CVS cliente deve-se está conectado o CVS servidor.

Suponto que há um novo arquivo “classeNos.java” criado no ProjetoListaEncadeada que você quer adicionar, fazemos:

~$
~$ cvs add classeNos.java

Ah, você lembrou que este novo arquivo não é mais necessário no ProjetoListaEncadeada, fazemos:

~$
~$ rm classeNos.java
~$ cvs remove classeNos.java
~$ cvs commit

Pronto! Desta forma quando alguem que faz parte do ProjetoListaEncadeada der um “checkout” as novas modificações serão replicadas para ele! Rulez!!!

Verificando logs

Conectado ao CVS server via CVS cliente no linux, você pode verificar os logs as versões de um determinado projeto:

~$
~$ cvs log | less

Ele vai mostar o log das ultimas modificações do projeto em questão. O less é para a amostragem ficar mais amigável =)

~$
~$ cvs annotate | less

Mostra as anotações, linha a linha, com detalhes sobre o usuário e data das modificações. Por exemplo, você quer saber quem modificou codificou em 26 de agosto na versão v2 do ProjetoListaEncadeada:

~$
~$ cvs annotade | grep v1 | grep “26-Aug-09″

Ai vai a sua criatividade para filtrar a pesquisa do log.

Para mais comandos do CVS cliente no linux:

~$
~$ cvs –help-commands

Realmente o CVS é show de bola. Atualmente existe o SVN que o Dr. Google utiliza no code.google.com, mas sinceramente, não me adaptei bem (rsrs!). Em breve um post sobre SVN! ;)

Marcadores:
fev 11

Hiow,

Recebi recentemente um e-mail sobe o JBoleto. Um componente Java para geração de boletos. Visitando o site do projeto, vi que se trata de algo realmente sério e funcional. Bem documentado e organizado. Vale a pena dar uma olhada, uma vez na vida você precisará gerar boletos. Espero que não usando Java…

Acesse: http://www.jboleto.org

Marcadores:

2006 - 2009 (c) bleno.org
100% Compatível com Mozilla Firefox