Desenvolvimento

6 set, 2013

Como migrar um repositório de códigos Svn para Git

Publicidade

O objetivo deste artigo é mostrar como migrar um repositorio do Subversion para o Git. Git e Subversion são sistemas de controle de versão, responsáveis por gerenciar repositórios de códigos fonte. Para este artigo utilizamos o exemplo de um repositório open source armazenado em Subversion (Svn), que sera migrado para um repositório local Git. O ambiente utilizado é Linux e o último passo será atualizar este novo repositório em um servidor Git remoto, para isso utilizaremos o GitHub.

Crie seu repositório Git localmente

Instale o Git Core e o Git Svn, este último sera responsável por converter os códigos do repositório Subversion para o repositório Git. Em seguida crie um diretório para receber o projeto Svn que será migrado para Git. Inicialize o repositório Git.

$ sudo apt-get install git-core git-svn
$ mkdir projetogit
$ cd projetogit
$ git init

Baixe o projeto armazenado no Svn

Como exemplo de projeto em Svn, utilizaremos o projeto open source chamado “latex-uhm-thesis”, hospedado em http://latex-uhm-thesis.googlecode.com/.

Utilize o git svn para trazer os códigos do “latex-uhm-thesis”, do Subversion para o Git.

$ git svn clone http://latex-uhm-thesis.googlecode.com/svn/trunk/ latex-uhm-thesis-read-only

Este processo pode demorar um pouco, dependendo do tamanho do projeto Svn.

Sera criado o diretório “latex-uhm-thesis-read-only” com os arquivos ja convertidos do Svn para o Git.

Digite no prompt:

$ cd latex-uhm-thesis-read-only
$ git status

A partir deste momento o projeto que era Svn transformou-se em um projeto Git. Todo o histórico do projeto, que estava armazenado no Svn, agora está convertido para Git.

Verifique os últimos 5 commits:

git log -5

Atualize seu novo projeto com o servidor Git remoto

Feita a atualização local dos códigos do projeto de exemplo, anteriormente em Svn, agora atualize-o (branch master) em seu repositório Git remoto. Em nosso exemplo utilizamos o GitHub. O servidor Git remoto pode também ser uma instância administrada por você ou sua empresa, portanto a utilização do GitHub é opcional. O exemplo a seguir considera que sua conta Github possui um repositório chamado “test-migrate”.

git push git@github.com:seu-usuario/test-migrate.git master

Conclusão

Você pode encontrar casos de projetos Svn com mais de 10 ou 50 Gb e optar por ignorar o histórico do Svn. Com isso seu novo projeto gerenciado pelo Git pode realmente surpreendê-lo e ficar muito pequeno. Neste cenário, baixe o projeto usando “svn checkout”, exclua a pasta “.svn” e apenas inicie um projeto Git com “git init” no diretório local do projeto. Em outro cenário possível, pode-se usar o “git svn” para manter o repositório Svn atualizado, realizando desta forma atualizações no servidor remoto Svn. Há diversos outros cenários possíveis de migração entre repositórios de código, este artigo apresentou apenas um cenário e citou rapidamente outros dois cenários.

Referencias