# Usar o &CVS;

## Bases do &CVS;

O &CVS; é o sistema de controlo de versões que muitos dos projectos 'open-source' - incluindo o &kde; — usam. Ele grava todo o código num sítio local, chamado de repositório. A partir do repositório, os programadores poderão obter uma versão actualizada do projecto (ou partes dele) em qualquer altura. Em contraste com outros sistemas de controlo de versões, não é necessário bloquear os ficheiros em que uma pessoa deseja trabalhar. Como tal, o desenvolvimento poderá ser altamente paralelizado.

Sempre que um programador terminar uma tarefa, ele envia o seu código (acompanhado de uma mensagem de registo). O &CVS; tem a seu cargo a junção das alterações feitas pelos vários programadores. Poderá acontecer, obviamente, que os programadores trabalhem no mesmo pedaço de código, o que irá resultar num conjunto de alterações em conflito (na prática, isto ocorre raramente, e normalmente é sintoma de falta de comunicação). Nesse caso, o &CVS; rejeita um envio; só após todos os conflitos terem sido resolvidos é que um ficheiro poderá ser enviado.

Até agora, isto foi uma descrição das funcionalidades básicas do &CVS; com que uma pessoa tem de lidar normalmente. Mas o &CVS; oferece bastante mais: poder-se-ão manter várias ramificações de um projecto (⪚ o &kde; 1.1.2 e o &kde; 2 eram ramificações da árvore de desenvolvimento do &kde;), reunir as modificações de uma ramificação noutra, pedir as diferenças entre versões, o histórico de versões de ficheiros &etc;

O &CVS; está implementado como um sistema cliente-servidor. Como utilizador, toda a comunicação com o repositório é feita através do programa da linha de comandos &cvs;. Está disponível uma interface de nível mais elevado através das interfaces existentes, como o &cervisia; () ou o TkCVS (). No &kdevelop;, só uma pequena parte da funcionalidade do &cvs; é relevante para o seu trabalho diário e que poderá ser usada directamente.

Assume-se um conhecimento básico da utilização do &CVS;. Em particular, deverá saber como obter um dado projecto do seu repositório. Recomenda-se o livro Open Source Development With &CVS; de Karl Fogel, o qual está disponível de forma livre (excepto os capítulos não-técnicos). Veja em .

## Comandos do &CVS; no &kdevelop;

Na árvore de ficheiros, estão disponíveis os seguintes itens do menu de contexto:

Adicionar ao Repositório

- Prepara o ficheiro marcado para ser adicionado ao repositório. O ficheiro é transferido para o mesmo quando o enviar (ou a pasta que o contém) da próxima vez.

Remover do Repositório

- Prepara um ficheiro para ser removido do repositório. Isto remove também o ficheiro do sistema de ficheiros local, como tal use esta funcionalidade com cuidado!

Actualizar

- Execute o `cvs update` para reunir as modificações dos outros utilizadores na sua pasta de trabalho. Quando usar este item do menu sobre uma pasta, a actualização irá acontecer normalmente de forma recursiva, excepto se tiver desactivado essa possibilidade no ficheiro de configuração `.cvsrc`.

Enviar

- Executa o `cvs commit` para enviar as modificações locais para o repositório. Lembre-se que deverá fazer uma actualização local antes de fazer isto. Caso contrário, quando outro utilizador tiver enviado as suas modificações antes, o &CVS; poder-lhe-á mostrar uma mensagem de erro.

Todos estes comandos são invocados como sub-processos pelo &kdevelop; sem quaisquer outras opções da linha de comandos ou variáveis de ambiente. Isto poderá ser um problema quando a ligação ao servidor de &CVS; for através de uma ligação de &ssh; e você tiver de indicar a sua senha, sempre que envia ou recebe as actualizações. Isto é, por exemplo, necessário quando o seu projecto está alojado no `sourceforge.net`. As soluções alternativas para este problema estão descritas na FAQ do &CVS;/SSH, que poderá encontrar na documentação do SourceForge.

## Nos Bastidores

### O Que o &CVS; Grava na Pasta de Trabalho

(... ainda não escrito ...)