You are on page 1of 3

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 polmica ao se tomar uma deciso a respeito. Estou falando da definio de um sistema de controle de verses (Software Configuration Management - SCM) para controlar e gerenciar a evoluo 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 discusso gerada na empresa onde trabalho. Fato que me motivou a escrever sobre este tema aps coletar dados e pesquisas suficientes para argumentar a migrao do nosso SCM atual, o CVS, para o Subversion. Para uma completude das argumentaes, tambm era necessrio se levantar uma forma de migrar todos os dados hisricos do repositrio do antigo para o novo sistema. Para resumir a comparao entre as duas tecnologias, criei uma tabela que cruza caractersticas dos dois sistemas em uma perspectiva de administrao da ferramenta, que o que no fundo mais importa, j que as ferramentas utilizadas como clientes para acessa-las so muito parecidas e de fcil assimilao, o que no influenciaria em nada como vantagem ou desvantagem entre um e outro sistema de versionamento.

CVS feito em arquivos RCS. Estes arquivos so criados em toda a rvore de diretrios do projeto para versionar arquivo por arquivo. Possibilita maior poder para recuperar possveis falhas apenas editando esses arquivos. Existem problemas de acesso concorrente por se tratarem de arquivos em disco.

Subversion

Armazenamento

feito em banco de dados Berkley DB. Existem aplicativos para a recuperao de falhas.

Concorrncia

Acesso concorrente transacionado pelo banco de dados.

Mais rpido. O nico problema de velocidade est no momento de se Mais lento pelo fato de usar file Velocidade conectar ao repositrio e fazer o primeiro system. checkout, j que ele traz uma cpia local de todos os arquivos. Para cada branch ou tag, cria-se uma cpia no repositrio e todos os arquivos do projeto ganham um nmero Gerencia verses diferentes identificador de 4 dgitos. Ao se para cada arquivo do projeto. configurar um branch, o SVN cria uma Permite a criao de branchs e Versionamento tag correspondente no incio, mas depois tags por arquivo. No permite que se d o primeiro commit, ele se restaurar a verso do projeto transforma no branch e o novo partir de uma tag especfica. versionamento se inicia imediatamente. Permite restaurar a verso do projeto partir de uma tag especfica. Permite que se vincule e versione tambm atributos relacionados aos No armazena metadados, Metadados arquivos, esses atributos so somente arquivos. configurados na forma de par chave=valor. Bom para armazenamento de arquivos texto. Problema em Tipo de arquivos armazenar binrios. Tambm Todos os tipos de arquivo. comportados no possvel se fazer diff de binrios. Rollback Permite, no entanto tem que se No permite, tem que ser fazer cpias de faze de arquivo por arquivo. verses em bom estado. No possui a teoria do ou tudo, ou nada pois, quando h conflitos, os arquivos afetados deixam de serem commitados, sendo que os esto ntegros(sem conflito) vo para o repositrio mesmo assim. Possui o conceito do ou tudo, ou nada. Assim, os nmeros das revises so marcados apenas quando todos os conflitos foram resolvidos e finalmente se d o commit. Permite tambm configurar grupos para commit. Possui. Se um usurio bloqueia o arquivo, ele fica como somente leitura para os outros. Pode se comunicar via Http e ssh. Possui. Possui.

Transaes Integridade

Lock de arquivos No possui. Interoperabilidade No possui. Integrao com o Possui. RedMine Integrao com o Possui. Hudson

Reparem que ao final da tabela de avaliao eu cito duas integraes com outros sistemas: RedMine e Hudson. O RedMine um sistema de gerncia de projetos que utilizamos na empresa. J o Hudson o sistema de integrao contnua open-source mais utilizado do mercado. Estas duas ferramentas se tornam muito valiosas para se fechar o crculo formado pelos componentes necessrios a uma Gesto de Configurao eficaz. Pretendo abordar algo sobre elas e sobre a teoria em torno da Gerncia de Configurao e Mudana em breve! Ok, podemos concluir pela tabela que, o SVN possui uma srie de caractersticas mais arrojadas que o CVS, mas ainda fica uma pergunta no ar: se a necessidade era tambm a de migrar os dados, como faramos isto sem que perdssemos todos os dados histricos das tags e branchs criados? Para a rdua tarefa de migrao tambm j existe uma ferramenta muito difundida: o CV2SVN... Ufa! Esta ferramenta basicamente percorre toda a estrutura de diretrios do projeto afim de mapear e migrar todos os dados histricos de branchs e tags criadas para o novo repositrio. Ela permite tambm que se configure os dois SCM's para sincronizar as alteraes de arquivos de um para o outro. Os nossos prximos passos so instalar ento o SVN e CVS2SVN e colocar a migrao em prtica. Prometo relatar os resultados e todo o caminho das pedras nos prximos posts!

Seguem algumas referncias importantes sobre o assunto:

Sites para documentao:

CVS: http://www.nongnu.org/cvs/#documentation Subersion: http://subversion.apache.org/docs/

Estratgia de migrao:

Aplicativo CVS2SVN : http://cvs2svn.tigris.org

Outras referncias:

http://sam.zoy.org/writings/programming/svn2cvs.html http://onlamp.com/pub/a/onlamp/2005/10/03/cvs-to-subversion-withcvs2svn.html http://sial.org/howto/subversion/cvs-migrate/

You might also like