terça-feira, 23 de fevereiro de 2016

Conhecendo o CVS (Concurrent Versions System)

 Boa tarde, hoje iremos conhecer um pouco sobre a ferramenta de controle de versão CVS (Concurrent Versions System) .



Uma das suas funções é guardar históricos de mudanças. Uma grande característica do CVS é que ele não faz look de arquivos. Ele permite que mais de um desenvolvedor trabalhe no mesmo arquivo.

Colaboração simultânea é possível através do modelo  COPIAR-ALTERAR-JUNTAR. 

  • COPIAR : Os desenvolvedores pedem uma cópia local para o servidor.
  • ALTERAR : O desenvolvedor A altera sua cópia local e envia para o servidor.
  • JUNTAR (merge) : O desenvolvedor B envia sua alteração para o servidor e é informado sobre o conflito. 


O 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.

Terminologias do CVS:
  • Checkout: normalmente é usado para denominar o primeiro download de um módulo inteiro a partir do repositório CVS.
  • Commit: envio das modificações feitas pelo usuário ao repositório CVS.
  • Export: é o download de um módulo inteiro a partir de um repositório CVS, sem os arquivos administrativos CVS. Módulos exportados não ficam sob controle do CVS.
  • Import: geralmente é usado para designar a criação de um módulo inteiro dentro de um repositório CVS através do upload de uma estrutura de diretórios.
  • Module: é uma hierarquia de diretórios. Geralmente um projeto de software existe como um simples módulo dentro do repositório.
  • Release: é a versão de um produto inteiro.
  • Revision: é a numeração atribuída pelo CVS a cada modificação de um arquivo.
  • Tag: é um nome simbólico dado para um conjunto de arquivos em um instante específico durante o desenvolvimento.
  • Branch: é uma ramificação no desenvolvimento, usada para descrever o processo de divisão dos arquivos de um projeto em linhas de desenvolvimento independentes. Podendo servir para teste de uma nova funcionalidade ou para projetos destinados a um cliente específico.
  • Update: atualização da cópia local do trabalho através do download das modificações feitas por outros usuários no repositório.
  • Merge: é a fusão de modificações feitas por diferentes usuários na cópia local de um mesmo arquivo. Sempre que alguém altera o código, é necessário realizar um update antes do commit, de modo que seja feito o merge — ou a fusão — das mudanças.


Limitações do CVS:
  • Os arquivos em um repositório CVS não podem ser renomeados a partir do cliente, eles devem ser explicitamente removidos e readicionados. Entretanto, com acesso ao servidor os arquivos podem ser renomeados. No servidor, cada arquivo na estrutura de diretório do cliente possui um equivalente seguido de ,v. Exemplo: o arquivo index.html no cliente é gravado no servidor como index.html,v. A ação de renomear no servidor gera no cliente um processo de exclusão do arquivo antigo e criação de um novo e o histórico de atualizações é mantido.
  • O protocolo do CVS não permite que os diretórios sejam movidos ou renomeados. Cada arquivo do subdiretório em questão deve ser individualmente removido e readicionado.
  • Não permite "checkout" reservados (permite que dois usuários alterem o mesmo arquivo ao mesmo tempo) e em alguns casos pode ser mais custoso resolver o conflito do que evitar que ele ocorra.

Alguns dos principais desenvolvedores que trabalharam no CVS são atualmente responsáveis pelo Subversion (SVN), lançado no começo de 2004 e cujo objetivo é substituir o CVS ao lidar com algumas de suas limitações.

Nenhum comentário:

Postar um comentário