Preparar para migrar

Preparar

O primeiro passo para migrar um projeto do SVN para o controle de versão baseado em Git é preparar a máquina local do lead de migração. Nesta fase, você vai fazer o download de um script de utilitário prático, montar um sistema de arquivos com distinção entre letras maiúsculas e minúsculas (se necessário) e mapear as informações do autor do SVN para o Git.

Todas as etapas a seguir devem ser realizadas na máquina local do lead de migração.

Faça o download do script de migração

O Git vem com a maioria das ferramentas necessárias para importar um repositório SVN; no entanto, há algumas funcionalidades ausentes que foram adicionadas pela Atlassian em um prático arquivo JAR. Esse arquivo é essencial para a migração, portanto, não se esqueça de fazer o download do svn-migration-scripts.jar na conta do Bitbucket da Atlassian. Este guia presume que você o salvou em seu diretório inicial. Isenção de responsabilidade: para a migração do SVN, é necessário um sistema de arquivos que diferencia maiúsculas de minúsculas e isso não funciona no NTFS. A sugestão é fazer isso em uma máquina Linux.

Após o download, é uma boa ideia verificar os scripts para garantir que você tenha o Java Runtime Environment, o Git, o Subversion e o utilitário git-svn instalados. Abra um prompt de comando e execute:

java -jar ~/svn-migration-scripts.jar verify

Se você não tiver os programas necessários para o processo de migração, uma mensagem de erro vai ser exibida no console. Instale todos os softwares necessários antes de continuar.

Se for exibido um aviso sobre erro ao determinar a versão, execute export LANG=C (*nix) ou SET LANG=C (Windows) e tente novamente.

Se você estiver realizando a migração em um computador com sistema OS X, também vai ver o seguinte aviso:

You appear to be running on a case-insensitive file-system. This is unsupported, and can result in data loss.

A gente vai falar sobre isso na próxima seção.

Montar uma imagem do disco com distinção entre letras maiúsculas e minúsculas

A migração para o Git deve ser feita em um sistema de arquivos que diferencia letras maiúsculas de minúsculas para evitar corromper o repositório. Isso é um problema se você estiver executando a migração em um computador com o OS X, pois o sistema de arquivos OS X não faz essa distinção.

Se você não estiver executando o OS X, tudo o que precisa fazer é criar um diretório em sua máquina local chamado ~/GitMigration. Aqui é onde a conversão vai ser realizada. Em seguida, você pode pular para a próxima seção.

Migração do Git: montar a imagem do disco

Se você estiver executando o OS X, vai precisar montar uma imagem do disco que diferencia letras maiúsculas de minúsculas com o script create-disk-image incluso em svn-migration-scripts.jar. São necessários dois parâmetros:

  1. O tamanho em gigabytes da imagem do disco a ser criada. Você pode usar qualquer tamanho que quiser, desde que seja maior do que o repositório SVN que você está tentando migrar.
  2. O nome da imagem do disco. Este guia usa o GitMigration para esse parâmetro.

Por exemplo, o comando a seguir cria uma imagem de disco de 5 GB chamada GitMigration:

java -jar ~/svn-migration-scripts.jar create-disk-image 5 GitMigration

A imagem do disco é montada em seu diretório inicial, portanto, agora você deve ver um diretório chamado ~/GitMigration em sua máquina local. Ele funciona como um sistema de arquivos virtual que diferencia letras maiúsculas de minúsculas e é onde o repositório do Git convertido vai ser armazenado.

Extrair as informações do autor

O SVN registra apenas o nome de usuário do autor para cada revisão. O Git, no entanto, armazena o nome completo e o endereço de e-mail do autor. Isso significa que você precisa criar um arquivo de texto que mapeie os nomes de usuário do SVN para seus equivalentes no Git.

Migração do Git: mapear os nomes de usuário do SVN para os nomes de usuário do Git

Execute os comandos a seguir para gerar esse arquivo de texto de modo automático:

cd ~/GitMigration 
java -jar ~/svn-migration-scripts.jar authors <svn_repo_uri> > authors.txt

Não esqueça de substituir o pelo URI do repositório SVN que você quer migrar. Por exemplo, se o repositório estiver localizado em https://svn.example.com, você poderia executar o seguinte comando:

java -jar ~/svn-migration-scripts.jar authors https://svn.example.com > authors.txt

É criado um arquivo de texto chamado authors.txt que contém o nome de usuário de cada autor no repositório SVN, juntamente com um nome e endereço de e-mail gerados. Você deve ver algo assim:

j.doe = j.doe <j.doe@mycompany.com> 
m.smith = m.smith <m.smith@mycompany.com>

Altere as informações à direita do sinal de igual para o nome completo e endereço de e-mail do usuário correspondente. Por exemplo, você pode alterar os autores acima para:

j.doe = John Doe <john.doe@atlassian.com>
m.smith = Mary Smith <mary.smith@atlassian.com>

Resumo

Agora que você tem seus scripts de migração, imagem de disco (somente OS X) e informações do autor, você está pronto para importar seu histórico do SVN para um novo repositório do Git. A próxima fase explica como essa conversão funciona.

Pronto(a) para aprender Git?

Tente este tutorial interativo.

Comece agora mesmo