CVS
O CVS, ou Concurrent Version System é um sistema de controle de versão que permite que se trabalhe com diversas versões de arquivos organizados em um diretório e localizados local ou remotamente, mantendo-se suas versões antigas e os logs de quem e quando manipulou os arquivos.
Imagem: The CV Inn · BY · Openverse
CVS utiliza uma arquitetura cliente-servidor: um servidor armazena a(s) versão(ões) atuais do projeto e seu histórico, e os clientes se conectam a esse servidor para obter uma cópia completa do projeto, trabalhar nessa cópia e então devolver suas modificações. Tipicamente, cliente e servidor devem estar conectados por uma rede local de computadores, ou pela Internet, mas o cliente e o servidor podem estar na mesma máquina se a configuração do CVS for feita de maneira a dar acesso a versões e histórico do projeto apenas a usuários locais. O servidor geralmente roda sistema ao estilo Unix, enquanto o cliente CVS pode rodar qualquer sistema operacional. Vários clientes podem editar cópias do mesmo projeto de maneira concorrente. Quando eles confirmam suas alterações, o servidor tenta fazer uma fusão delas. Se isso não for possível, por exemplo porque mais de um cliente tentou executar alterações na mesma linha do documento, o servidor apenas executa a primeira alteração e informa ao responsável pela segunda alteração que houve conflito, e que é necessário uma intervenção humana. Se a validação da alteração for bem sucedida, o número de versão de cada cliente arquivo envolvido é incrementado, e o servidor CVS escreve uma linha de observação (fornecida pelo usuário), a data e o autor das alterações em seus arquivos de log.
Imagem: The CV Inn · BY · Openverse
A terminologia do CVS considera um projeto (conjunto de arquivos relacionados) gerenciados pelo CVS como um módulo, que consiste em uma hierarquia de diretórios contendo os arquivos do projeto. Um servidor CVS pode gerenciar diversos módulos; ele armazena todos os módulos administrados por ele em seu repositório. A cópia do módulo que foi baixada para um cliente é chamada cópia de trabalho (ou checkout). Abaixo, estão listados alguns termos em inglês, que fazem parte da terminologia CVS, e seu significado:
Imagem: JeepersMedia · BY · Openverse
O CVS foi desenvolvido de uma versão anterior de um sistema chamado Revision Control System (RCS), ainda em uso, que gerencia versões de um único arquivo, mas não de projetos inteiros. Dick Grune escreveu algumas breves notas históricas sobre o CVS em seu sítio. Citando-o: Criei o CVS para poder cooperar com meus alunos Erik Baalbergen e Maarten Waage no ACK (Amsterdam Compiler Kit) Compilador C. Cada um de nós tinha uma rotina diferente (um dos alunos trabalhava 45h por semana, outro era irregular e eu podia trabalhar no projeto apenas à noite). O projeto deles durou de Julho de 1984 até Agosto de 1985. O CVS foi chamado inicialmente de CMT, pela razão óbvia que nos permitia validar (commit) versões independentemente. O código foi lançado publicamente ao mod.sources em 23 de junho de 1986. Ainda se pode ver a mensagem original em grupos do Google. O código que evoluiu para a versão atual do CVS foi iniciada por Brian Berliner em abril de 1989, com posterior contribuição de Jeff Polk e muitos outros contribuidores. Brian Berliner escreveu um artigo apresentando suas contribuições para o CVS, que descreve como a ferramenta foi estendida e usada internamente pelo Prisma, uma equipe de desenvolvimento que trabalhava no núcleo do SunOS, e foi lançada em benefício da comunidade sob a GPL.
Imagem: The CV Inn · BY · Openverse
Alguns dos principais desenvolvedores que trabalharam no CVS são atualmente responsáveis pelo Subversion (SVN)[carece de fontes?], lançado no começo de 2004 e cujo objetivo é substituir o CVS ao lidar com algumas de suas limitações.


