3.2.4 Subversion

 

Subversion é um sistema de controle de versão livre/open-source. Ele gerência arquivos e diretórios, e as modificações feitas neles ao longo do tempo. Permite que você recupere versões antigas de seus dados, ou que examine o histórico de suas alterações.

 

O Subversion teve seu inicio por volta do ano de 2000 quando a CollabNet ao ficar frustada com o desempenho do CVS, decidiu construir um sistema de controle de versão do zero, para isso contratou Karl Fogel, o autor de Open Source Development with CVS (Coriolis, 1999), que juntamente com seu amigo Jim Blandy já estavam iniciando a construção de um novo sistema de controle de versão, inclusive já tinham o nome em mente “Subversion”.

 

A equipe do projeto inicial determinou que não queriam romper com a metodologia já conhecida para controle de versão, eles desejavam construir algo que fosse melhor que o CVS. O Novo sistema deveria ser compatível com as características do CVS, mantendo o mesmo modelo de desenvolvimento, mas não ter os erros conhecidos do CVS. E mesmo que o novo sistema não substituísse o CVS, ele deveria ser semelhante para que qualquer usuário do CVS pudesse migrar de sistema com o menor esforço possível.

 

O Subversion assim como o CVS funciona tanto em rede como local.  É um sistema que pode ser usado para gerenciar qualquer conjuntos de arquivos, eles podem ser qualquer tipo de informação — imagens, músicas, bancos de dados, documentação, etc. Para o Subversion, dados são apenas dados.

O Subversion foi implementado como um conjunto de bibliotecas C compartilhadas com APIs bem definidas. Tornando o Subversion extremamente manutenível e usável por outras aplicações e linguagens.

 

Implementa um sistema de arquivos “virtual” sob controle de versão que rastreia modificações a toda a árvore de diretório ao longo do tempo. Os arquivos e os diretórios são versionados.

 

Pode-se adicionar, excluir, copiar, e renomear ambos os arquivos ou diretórios e cada arquivo adicionado começa com um histórico próprio e completamente novo.

 

Commits atômicos, um conjunto de modificações ou é inteiramente registrado no repositório, ou não é registrado de forma nenhuma.

 

Versionamento de metadados, cada arquivo e diretório tem um conjunto de propriedades, chaves e valores associados, as propriedades são versionadas ao longo do tempo, tal como os conteúdos de arquivo.

 

Escolha das camadas de rede, podemos associar ao servidor Apache HTTP como um módulo de extensão, fornecendo uma ótima estabilidade e interoperabilidade, além de acesso instantâneo aos recursos existentes como autenticação, autorização, compactação online, dentre outros.

 

Um servidor próprio mais leve e independente também está disponível utilizando um protocolo específico que pode ser facilmente ser “tunelado” sobre SSH.

 

Manipulação consistente de dados, o Subversion exprime as diferenças de arquivo usando um algoritmo diferenciado, que funciona de maneira idêntica tanto em arquivos texto (compreensível para humanos) quanto em arquivos binários (incompreensível para humanos). Ambos os tipos de arquivos são igualmente armazenados de forma compactada no repositório, e as diferenças são enviadas em ambas as direções pela rede.

 

Ramificações e rotulagem eficiente, o custo para fazer ramificações (branching) e de rotulagem (tagging) não é necessariamente proporcional ao tamanho do projeto. O Subversion cria ramos e rótulos simplesmente copiando o projeto, usando um mecanismo semelhante a um hard-link. Com isso as operações levam uma pequena quantidade de tempo.

 

Ambientes de desenvolvimento: O Subversion possui plugins para Eclipse (Subclipse), NetbeansVisual Studio (ankhsvn), e integra-se com o Windows Explorer através do TortoiseSVN, este aplicativo é uma extensão à API do Windows Explorer, e possibilita que através de janelas no Windows o usuário possa rapidamente fazer acesso a todas as operações do cliente SVN em uma shell integrada no Windows.

 

Comments