Convertendo repositórios SVN para Mercurial no Windows
Recentemente no trabalho resolvemos sair do SVN e ir para o Mercurial. Diversos motivos foram considerados para tomar tal decisão e falarei sobre elas em um post futuro. Porém, durante a transição, acabei me deparando com dificuldades para encontrar uma solução de conversão de repositórios no Windows e resolvi compartilhar a solução aqui no blog.
A ferramenta
Primeiro, qual ferramenta usar? Apesar de trabalhar com Windows, costumo fazer tudo relacionado a desenvolvimento pela linha de comando. Acho mais prático e, em geral, resolvo mais rápido. Portanto tinha só o Mercurial básico instalado. Para fazer a conversão, vi que precisaria usar uma extensão do Hg para fazer a operação. Além dela, precisaria de algumas bibliotecas Python que teriam que ser compiladas no Windows. Resumindo, muita coisa.
Comecei a procurar na web (leia-se Google) e finalmente achei uma alma caridosa falando que o TortoiseHg já vinha com tudo necessário. Ao ler que o Tortoise também vinha com a linha de comando, resolvi baixar e instalar a ferramenta.
Configurações
Apesar do TortoiseHg vir com tudo necessário, ainda é preciso de uma configuração rápida. Procure o arquivo Mercurial.rc e abra-o com o Notepad. Dentro da parte de extensões (extensions) procure a linha com a extensão 'convert'. Essa linha vem comentada por padrão no Hg, então precisamos habilita-la. Basta remover o ponto e vírgula no inicio da linha, deixando a linha assim:
convert =Convertendo
Agora já podemos fazer a conversão. Antes de começar, algumas observações:
- A conversão pode ser um pouco demorada dependendo na quantidade de revisões e branches que o seu repositório possui.
- O Mercurial só versiona arquivos. Pastas vazias são ignoradas. Portanto se o seu código tem pastas vazias que você precisa manter, recomendo colocar um arquivo vazio dentro delas para não perder a estrutura.
- Por padrão, o Mercurial cria um pasta para o novo repositório que é o nome do repositório SVN com o sufixo "-hg". Como o Mercurial não implica com o nome da pasta original, você pode renomear para o que quiser depois.
O comando para fazer a conversão é bem simples:
hg convert [URL do repositório]
Exemplo:
hg convert svn://repositorio.empresa.com/projeto/
O Mercurial detecta automaticamente o repositório, cria todas as branches necessárias e converte o seu trunk para o branch default. Quando terminar é necessário fazer um update:
hg updateIsso faz com que o Hg aplique todas as revisões ao diretório. Agora o repositório está pronto para ser usado. Espero ter ajudado outras pessoas que estão fazendo sua transição de SVN para Mercurial!
Social Media