Artigos Rem soft Sistemas

CVS X Subversion

 

Olá pessoal,

 
hoje gostaria de tratar sobre um assunto que, por mais que esteja bem conceituado e conhecido por todos, sempre gera uma certa polêmica ao se tomar uma decisão a respeito. Estou falando da definição de um sistema de controle de versões (Software Configuration Management – SCM) para controlar e gerenciar a evolução dos artefatos gerados por um projeto de software.
 
Embora existam dezenas de sistemas dessa linha, tratarei aqui apenas dos mais utilizados atualmente no mercado: o CVS e o Subversion (SVN) frutos de uma boa e produtiva discussão gerada na empresa onde trabalho. Fato que me motivou a escrever sobre este tema após coletar dados e pesquisas suficientes para argumentar a migração do nosso SCM atual, o CVS, para o Subversion. Para uma completude das argumentações, também era necessário se levantar uma forma de migrar todos os dados hisóricos do repositório do antigo para o novo sistema.
 
Para resumir a comparação entre as duas tecnologias, criei uma tabela que cruza características dos dois sistemas em uma perspectiva de administração da ferramenta, que é o que no fundo mais importa, já que as ferramentas utilizadas como clientes para acessa-las são muito parecidas e de fácil assimilação, o que não influenciaria em nada como vantagem ou desvantagem entre um e outro sistema de versionamento.
 
 CVSSubversion
ArmazenamentoÉ feito em arquivos RCS. Estes arquivos são criados em toda a árvore de diretórios do projeto para versionar arquivo por arquivo. Possibilita maior poder para recuperar possíveis falhas apenas editando esses arquivos.É feito em banco de dados Berkley DB. Existem aplicativos para a recuperação de falhas.
ConcorrênciaExistem problemas de acesso concorrente por se tratarem de arquivos em disco.Acesso concorrente transacionado pelo banco de dados.
VelocidadeMais lento pelo fato de usar file system.Mais rápido. O único problema de velocidade está no momento de se conectar ao repositório e fazer o primeiro checkout, já que ele traz uma cópia local de todos os arquivos.
VersionamentoGerencia versões diferentes para cada arquivo do projeto. Permite a criação de branchs e tags por arquivo. Não permite restaurar a versão do projeto à partir de uma tag específica.Para cada branch ou tag, cria-se uma cópia no repositório e todos os arquivos do projeto ganham um número identificador de 4 dígitos. Ao se configurar um branch, o SVN cria uma tag correspondente no início, mas depois que se dá o primeiro commit, ele se transforma no branch e o novo versionamento se inicia imediatamente. Permite restaurar a versão do projeto à partir de uma tag específica.
MetadadosNão armazena metadados, somente arquivos.Permite que se vincule e versione também atributos relacionados aos arquivos, esses atributos são configurados na forma de par “chave=valor”.
Tipo de arquivos comportadosBom para armazenamento de arquivos texto. Problema em armazenar binários. Também não é possível se fazer diff de binários.Todos os tipos de arquivo.
RollbackPermite, no entanto tem que se faze de arquivo por arquivo.Não permite, tem que ser fazer cópias de versões em bom estado.
Transações – IntegridadeNão possui a teoria do “ou tudo, ou nada” pois, quando há conflitos, os arquivos afetados deixam de serem “commitados”, sendo que os estão íntegros(sem conflito) vão para o repositório mesmo assim.Possui o conceito do “ou tudo, ou nada”. Assim, os números das revisões são marcados apenas quando todos os conflitos foram resolvidos e finalmente se dá o commit. Permite também configurar grupos para commit.
Lock de arquivosNão possui.Possui. Se um usuário bloqueia o arquivo, ele fica como “somente leitura” para os outros.
InteroperabilidadeNão possui.Pode se comunicar via Http e ssh.
Integração com o RedMine Possui.Possui.
Integração com o HudsonPossui.Possui.
 
 
 
 
 
Reparem que ao final da tabela de avaliação eu cito duas integrações com outros sistemas: RedMine e Hudson. O RedMine é um sistema de gerência de projetos que utilizamos na empresa. Já o Hudson é o sistema de integração contínua open-source mais utilizado do mercado. Estas duas ferramentas se tornam muito valiosas para se fechar o círculo formado pelos componentes necessários a uma Gestão de Configuração eficaz. Pretendo abordar algo sobre elas e sobre a teoria em torno da Gerência de Configuração e Mudança em breve!
 
Ok, podemos concluir pela tabela que, o SVN possui uma série de características mais arrojadas que o CVS, mas ainda fica uma pergunta no ar: se a necessidade era também a de migrar os dados, como faríamos isto sem que perdêssemos todos os dados históricos das tags e branchs criados?
 
Para a árdua tarefa de migração também já existe uma ferramenta muito difundida: o CV2SVN… Ufa!
 
Esta ferramenta basicamente percorre toda a estrutura de diretórios do projeto afim de mapear e migrar todos os dados históricos de branchs e tags criadas para o novo repositório. Ela permite também que se configure os dois SCM’s para sincronizar as alterações de arquivos de um para o outro.
 
Os nossos próximos passos são instalar então o SVN e CVS2SVN e colocar a migração em prática. Prometo relatar os resultados e todo o caminho das pedras nos próximos posts!
 
 
Seguem algumas referências importantes sobre o assunto:
 
 
Sites para documentação:
 
Estratégia de migração:
 
Outras referências:
 
 
Fiquem à vontade para deixar os seus comentários!
 
 
Um abraço a todos e até o próximo post! 😉
 
 
.
  • Rem Soft Sistemas

    REM SOFT é uma abreviação de REMOTE SOFTWARE, pois somos especialistas em prover soluções digitais com larga experiência no trabalho remoto. Pensamos sempre “fora da caixa” quando se trata de inovação. Nossa equipe é apaixonada por tecnologia e atendimento diferenciado aos clientes. Nossas equipes são organizadas em Squads multidisciplinares e temos o HOME OFFICE no nosso DNA.

Escrito por:

Está gostando do conteúdo? Compartilhe!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Artigos Recentes

Como a Transformação Digital Está Moldando o Futuro dos Negócios

A transformação digital não é mais uma opção, mas uma necessidade para empresas que desejam se manter competitivas no mercado atual. À medida que a tecnologia avança rapidamente, empresas de todos os setores estão adotando soluções digitais para melhorar suas operações, aumentar a eficiência e oferecer melhores experiências aos clientes.

Leia Mais »

MongoDB: uma introdução ao mundo NoSQL

  No contexto de tecnologias, é importante sempre ter em mente duas características fundamentais da área: Primeiramente, quando uma tecnologia é bem aplicada e obtém sucesso, há uma tendência de expansão do seu uso, com isso, mais explorada e desenvolvida,  naturalmente as aplicações exigem cada vez mais dessa tecnologia. Em

Leia Mais »

Python: Analisando Dados E Criando Gráficos

  Nos últimos anos, a análise de dados tornou-se um dos pilares fundamentais das estratégias de grandes empresas em todo o mundo. À medida que a quantidade de informações disponíveis continua a crescer exponencialmente, a capacidade de extrair insights significativos desses dados se tornou uma vantagem competitiva crucial. Nesse contexto, a linguagem

Leia Mais »

Dominando os recursos de relacionamentos eloquent do Laravel

Introdução Nos bastidores de qualquer aplicativo Laravel poderoso está o Eloquent ORM, uma ferramenta que não só simplifica drasticamente a interação com o banco de dados, mas também abre as portas para uma arquitetura de aplicativos mais organizada e flexível. Entre os vários tesouros que o Eloquent oferece, destaca-se o

Leia Mais »

Sobre o Autor

Mais sobre tecnologia

Gostou do Artigo?

Recebemos sua Assinatura com Sucesso!

Obrigado por assinar nossa newsletter!

Enviamos um e-mail para você confirmar sua assinatura, assim que confirmar passará a receber novidades em tecnologia da Rem Soft Sistemas.

Lembre-se sempre se caso não receber nosso e-mail na caixa de entrada,
Observe sua caixa de spam em seu e-mail.