Revista Do Linux
 
  
  
EDIÇÃO DO MÊS
 CD do Mês


 Capa
 Entrevista
 Estudo de Caso
 Serviço Público
 Documentação
 Hardware
 Passo a Passo
 Programação
 Redes
 Ferramenta
 Solução
 Estudo de Caso
 

Controle de Versão: sem medo de aprimorar

Conheça o CVS, um sistema de controle de versão muito útil no desenvolvimento de software, documentação ou mesmo manutenção dos arquivos de configuração de seu sistema

É muito comum que, dentro de uma organização, documentos de diversos tipos tenham que ser escritos por várias pessoas. No mundo real, várias pessoas podem ler, escrever, enfim, modificar o documento, visto que várias pessoas podem ter em mãos as cópias de um mesmo documento. No mundo digital, porém, isto vem a ser um problema que pode gerar até mesmo prejuízos para a empresa. Como duas pessoas poderão abrir e modificar o mesmo documento?

Partindo para áreas específicas, o código de um programa é um documento que é alterado constantemente e, muitas vezes, precisa ser aberto por várias pessoas ao mesmo tempo. Um caso (que em muitas empresas é real) é o desenvolvimento de software: muitas pessoas trabalham constantemente, aperfeiçoando e testando o código, mas podem depender de arquivos nos quais outras pessoas estão trabalhando. Além disso, precisam fazer backups de versões anteriores, já que se um erro ocorrer no código atual, eles poderão recuperar o anterior e comparar com o código atual.

O Sistema de Versões Concorrentes (Concurrent Versions System - CVS) é uma ferramenta extremamente utilizada para os casos citados anteriormente. Ela gerencia várias versões de documentos, além de permitir que várias pessoas possam trabalhar no mesmo arquivo.

Existem várias ferramentas de controle de versão disponíveis, tanto comerciais como de código aberto. Você pode obter uma lista destas ferramentas no site linas.org/linux/cmvc.html, juntamente com uma breve explicação sobre cada uma delas. Neste artigo será enfatizada a ferramenta CVS, devido às suas funcionalidades, seu estágio de desenvolvimento e o seu uso no mundo inteiro.

Um pouco mais sobre a ferramenta

O CVS possui todas as características do RCS (Revision Control System), que é um software mantido pela Free Software Foundation. Por isso, o CVS foi desenvolvido sob a licença GPL. Além disso, ele possui recursos extras que fazem dele um software extremamente interessante:

  • O CVS trabalha com o modelo cliente/servidor; isto permite que o documento seja acessado de qualquer local, bastando ter uma conexão com a Internet, ou no caso de um CVS interno, bastando a máquina estar conectada à rede interna.
  • Evita conflitos entre arquivos (nos quais várias pessoas estejam trabalhando), bastando executar um único comando.
  • Disponível para vários sistemas operacionais, incluindo Linux, Solaris, OS/2 e Windows.
  • Permite que qualquer formato de documento seja incluído, desde arquivos com código, documentos legais, imagens e até mesmo arquivos de configuração do sistema (por exemplo, /etc/resolv.conf). Isto permite que, se ocorrer algum erro no estado atual, o seu estado anterior possa ser resgatado e o sistema/documento possa ser continuado sem problemas.
  • A ferramenta possui uma interface web, permitindo que arquivos e módulos possam ser vistos através de um navegador.

Interessado na ferramenta? Vamos agora mostrar mais detalhes sobre sua utilização.

Configuração Rápida e Simples

Além de todas as características mostradas, o CVS possui ainda a facilidade de instalação. Primeiramente, obtenha os pacotes do CVS para a sua distribuição (nos CDs ou procure na página oficial do CVS em www.cvshome.org/) e instale-os. O próximo passo é a configuração de variáveis de ambiente, necessárias para todos os usuários que irão acessar o CVS. Elas devem ser colocadas no arquivo /etc/profile (ou no .bash_profile de cada usuário). Um exemplo:



export EDITOR=/bin/vi 

export CVSROOT=:pserver:lisiane@teste.andromeda:/home/cvs            

A variável de ambiente EDITOR indica qual será o editor usado para a verificação/validação de arquivos. Cada vez que um arquivo é modificado, é importante copiá-lo novamente no servidor; neste processo é aberto um editor que irá permitir que seja colocado um comentário a respeito da modificação feita no arquivo. Neste caso, será aberto o vi.

A variável CVSROOT é indispensável. O parâmetro pserver indica que o usuário só precisa efetuar o login pela primeira vez (executar o comando login), e nas próximas vezes que for efetuado algum tipo de acesso, o sistema irá identificar automaticamente o usuário. Após este parâmetro, está indicado o usuário (lisiane), o servidor onde estão localizados os arquivos (teste.andromeda) e por fim, o diretório/módulo onde os arquivos estão localizados no servidor (/ home/cvs). Podem ser colocadas várias opções de diferentes formas, mas a forma mostrada acima acessa o servidor, sem que seja necessário um comando de login cada vez em que for feito um acesso.

Deve-se agora criar um diretório, que terá como propósito armazenar o repositório do código-fonte e também fornecer acesso de leitura e escrita a usuários e grupos. Seguem os passos necessários para este procedimento:


    # export CVSROOT=/home/cvs                  

    # groupadd cvs                             

    # useradd -g cvs -d /home/cvs cvs           

     # ls -ld $CVSROOT   ... (a lista deve ser mostrada)  

    # chmod o-rwx $CVSROOT                              

    # chmod ug+rwx $CVSROOT                                     


Por fim, basta inicializar o CVS:


    # cvs init         

Neste momento, o repositório está criado, porém não está funcional. É necessário adicionar os usuários ao CVS e criar grupos suplementares para os usuários. Como exemplo, o usuário tomy irá pertencer aos grupos cvs, usuarios e staff, e o usuário joao irá pertencer somente ao grupo cvs.



    # usermod -G cvs outros_usuarios                 

    # usermod -G cvs,usuarios,staff tomy 

     # usermod -G cvs,usuarios,staroffice outro_usuario

    # usermod -G cvs joao                            

Basta agora um usuário incluir os seus arquivos no repositório, através do comando cvs import.Detalhes e parâmetros sobre este comando podem ser encontrados em vários locais da Internet.

Tá, mas e agora?

Veja abaixo um pequeno guia com os principais comandos utilizados na conexão e manipulação dos arquivos entre o servidor e o cliente.

  • cvs checkout módulo: obtém o módulo do servidor, baixando os arquivos na máquina local.
  • cvs update: parecido com o checkout, porém atualiza arquivos existentes na máquina local com as mudanças feitas por outros desenvolvedores. É sempre importante executar este comando antes de iniciar as modificações nos arquivos.
  • cvs add arquivo: registra um novo arquivo no servidor.
  • cvs commit arquivo: adiciona o arquivo modificado ao repositório. Isto faz com que as mudanças estejam visíveis para outros usuários.
  • cvs remove arquivo: remove o arquivo do servidor.
  • cvs status arquivo: exibe detalhes referentes ao estado do arquivo, como por exemplo, versão do arquivo no repositório, módulo onde o arquivo está localizado no diretório e status do arquivo (atualização, criação, etc.).
  • cvs log arquivo: exibe informações completas sobre a situação do arquivo. Mostra as últimas modificações, o número total de atualizações, o módulo que contém o arquivo, entre inúmeros detalhes. É interessante colocar um comando adicional para que a tela possa ser mostrada aos poucos (exemplo: comandos more ou less).
  • cvs update -r<versão> arquivo: o parâmetro -r indica a versão do arquivo a ser atualizada. Esta opção é útil, por exemplo, para o caso de algum problema ocorrer com a versão que foi incluída no repositório, tornando possível a recuperação de uma versão anterior.

Para saber mais

Documento Como-Fazer localizado na Página do Projeto Linuxdoc - www.linuxdoc.org/HOWTO/CVS-RCS-HOWTO.html
Página oficial do CVS, contendo documentação, área para download dos pacotes e mais informações: www.cvshome.org/
Um guia sobre conceitos, configuração e administração do CVS: bazar.conectiva.com.br/~godoy/cvs/admin/


Lisiane Sztoltz - lisiane@conectiva.com.br


A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux