Close

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.

bancos de dados
Material relacionado

Como mover um Repositório do Git completo

Logotipo do Bitbucket
VER SOLUÇÃO

Aprenda a usar o Git com o Bitbucket Cloud

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. The name of the disk image. This guide uses GitMigration for this value.

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.


Compartilhar este artigo
Próximo tópico

Leitura recomendada

Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.

Pessoas colaborando usando uma parede cheia de ferramentas

Blog do Bitbucket

Ilustração do DevOps

Caminho de aprendizagem de DevOps

Demonstrações de funções no Demo Den com parceiros da Atlassian

Como o Bitbucket Cloud funciona com o Atlassian Open DevOps

Inscreva-se para receber a newsletter de DevOps

Thank you for signing up