Vários arquivos de configuração do servidor, projetos de software, soluções de problemas que vinha encontrando no dia-dia estava disposto em diretórios que usava como backup para resolver um determinado problema. Percebi que ia descobrindo novas formas de resolver o mesmo problema ou simplesmente otimizava alguma solução mas não estava atualizando os arquivos que tinha feito anteriormente. Resultado sempre que perdia o original perdia as otimizações que tinha feito.

Um sistema de controle de versão permite que você recuperar uma versão antiga para corrigir bugs ou recursos de atualização, para o ramo de desenvolvimento permitir que o projeto avance várias faixas simultaneamente mostram as diferenças entre dois estágios arbitrários de um projeto.

A maioria dos sistemas de controle de versão armazenam notas com cada mudança (histórico), e muitos oferecem ferramentas que permitem que um líder de projeto analise as mudanças. A maioria também incluem a capacidade de recuperar as diferenças entre versões de arquivos arbitrários (conflitos), o que torna mais fácil localizar bugs. Esses sistemas são comumente utilizados no desenvolvimento de software para controlar as diferentes versões (histórico e desenvolvimento) dos códigos-fontes e também da documentação.

Mostra a organização de uma equipe usando SVN

Em julho  tive a felicidade de alterar o arquivo de firewall e perceber que alguns serviços que usavam UDP para fazer conexão de áudio não funcionavam mais, o problema é que essa alteração concerteza foi feita a muito tempo atrás e não sabia mais quais eram as benditas portas que eu tinha bloqueado no servidor. Comecei a apagar uma linha e fazer o teste se tinha funcionado, aí começou aparecer outros problemas, então achei mais viável iniciar do zero meu firewall afinal não sabia o que tinha feito nas alterações anteriores. (Se tivesse comentado o código tinha resolvido o problema facilmente).

Foi aí que me veio a idéia de usar SVN, já tinha usado anteriormente CVS na empresa que tinha trabalhado  mas, pesquisando na internet vi que temos vantagens em implantar SVN ao invés do CVS dentre elas podemos destacar:

  1. CVS as versões são por arquivo, enquanto no SVN são por commit.
  2. CVS não é eficiente para arquivos binários pois foi o constituído para armazenar somente arquivos de texto, no caso de outros arquivos requerem informações adicionais. O SVN gerencia todos os tipos de arquivos, inclusive diretórios.
  3. No SVN as transações entre cliente e servidor seguem a instrução “tudo ou nada”, ou seja, no caso de algum problema no envio o commit não é válido e nada é passado para o servidor garantindo a integridade do repositório, o mesmo não acontece com o CVS.

Enfim existem outros fatores que fazem do SVN uma evolução do CVS e para mim os motivos citados acima foram suficientes para a escolha do SVN. Como eu nunca tinha instalado nem CVS ou SVN então optei pelo SVN junto com o Subeclipse que é cliente SVN integrado a plataforma de desenvolvimento Eclipse.

No próximo post vou comentar sobre minha experiência na instalação do SVN no Debian Lenny.

Para mais informações http://svnbook.red-bean.com/svnbook/apa.html .