27.4. Introdução ao CVS

O CVS é adequado para fins de sincronização, caso arquivos específicos sejam editados com freqüência e sejam armazenados em um formato de arquivo, como texto ASCII, ou como texto de origem de programa. O uso do CVS para sincronizar dados em outros formatos, como arquivos JPEG, é possível, mas lida com grandes quantidades de dados, pois todas as variantes de um arquivo são armazenadas permanentemente no servidor CVS. Nesses casos, não é possível usar a maioria dos recursos do CVS. O uso do CVS para sincronizar arquivos só será possível se todas as estações de trabalho puderem acessar o mesmo servidor.

27.4.1. Configurando um servidor CVS

O servidor é o host em que todos os arquivos válidos se localizam, incluindo as versões mais recentes de todos os arquivos. Qualquer estação de trabalho estacionária pode ser usada como um servidor. Se possível, os dados do repositório do CVS devem ser incluídos em backups regulares.

Durante a configuração de um servidor CVS, é uma boa idéia conceder aos usuários o acesso ao servidor via SSH. Se o usuário for conhecido pelo servidor como tux e o software do CVS estiver instalado tanto no servidor quanto no cliente, as variáveis de ambiente a seguir deverão ser definidas no lado do cliente:


CVS_RSH=ssh CVS_ROOT=tux@server:/serverdir

O comando cvs init pode ser usado para inicializar o servidor CVS no lado cliente. Esse procedimento deve ser executado apenas uma vez.

Finalmente, é necessário designar um nome à sincronização. Selecione ou crie um diretório no cliente exclusivamente para conter arquivos a serem gerenciados com o CVS (o diretório também pode ficar vazio). O nome do diretório também será o nome da sincronização. Neste exemplo, o diretório é chamado de synchome. Vá para esse diretório e digite o comando a seguir para definir o nome de sincronização como synchome:


cvs import synchome tux wilber

Vários comandos do CVS requerem um comentário. Para essa finalidade, o CVS inicia um editor (o editor definido na variável do ambiente $EDITOR ou vi, se nenhum editor tiver sido definido). A chamada do editor pode ser evitada se você inserir o comentário antes na linha de comando, como no exemplo a seguir:


cvs import -m 'this is a test' synchome tux wilber

27.4.2. Usando o CVS

O repositório de sincronização agora pode ter a saída registrada de todos os hosts com cvs co synchome. Esse procedimento cria um novo subdiretório synchome no cliente. Para enviar suas mudanças para o servidor, vá para o diretório synchome (ou um de seus subdiretórios) e digite cvs commit.

Por padrão, todos os arquivos (incluindo subdiretórios) são enviados para o servidor. Para enviar somente determinados arquivos ou diretórios, especifique-os em cvs commit file1 directory1. É necessário adicionar novos arquivos e diretórios ao repositório com um comando como cvs add file1 directory1 antes de enviá-los para o servidor. Depois disso, envie arquivos e diretórios adicionados recentemente com cvs commit file1 directory1.

Se você for para outra estação de trabalho, registre a saída do repositório de sincronização, caso isso não tenha sido feito em uma sessão anterior na mesma estação de trabalho (veja acima).

Inicie a sincronização com o servidor com cvs update. Atualize arquivos ou diretórios específicos como em cvs update file1 directory1. Para ver a diferença entre os arquivos atuais e versões armazenadas no servidor, use o comando cvs diff ou cvs diff file1 directory1. Use cvs -nq update para ver quais arquivos seriam afetados por uma atualização.

Estes são alguns símbolos de status exibidos durante uma atualização:

U

A versão local foi atualizada. Isso afeta todos os arquivos fornecidos pelo servidor e ausentes no sistema local.

S

A versão local foi modificada. Se havia mudanças no servidor, foi possível fundir as diferenças na cópia local.

P

A versão local foi corrigida com a versão do servidor.

C

O arquivo local está em conflito com a versão atual do repositório.

?

Este arquivo não existe no CVS.

O status M indica um arquivo modificado localmente. Envie a cópia local para o servidor ou remova o arquivo local e execute a atualização novamente. Nesse caso, o arquivo ausente será recuperado do servidor. Se você enviar um arquivo modificado localmente e ele tiver sido mudado na mesma linha de comando e enviado, poderá haver um conflito, indicado por C.

Nesse caso, observe as marcas de conflito (»> e «<) no arquivo e decida entre as duas versões. Como essa tarefa pode ser desagradável, você pode abandonar as mudanças, apagar o arquivo local e digitar cvs up para recuperar a versão atual do servidor.

27.4.3. Mais informações

Esta seção simplesmente oferece uma breve introdução sobre as várias possibilidades do CVS. Uma documentação mais abrangente está disponível no seguinte URL:

http://www.cvshome.org/
http://www.gnu.org/manual/