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