Migrando um repositório SVN para GIT

Nos últimos dias, pesquisei uma forma de migrar um repositório de SVN para GIT e quando consegui fazer, percebi que era mais fácil que eu imagina. Com isso, resolvi escrever uma receitinha de como fazer isso.

Inicialmente você deve criar um arquivo mapeando seus usuários do SVN para o GIT. Ele deverá ter o formato abaixo:

leonardo = Leonardo Faria <[email protected]>
autor2 = Autor <[email protected]>

Nota: caso você não queira manualmente escrever esse arquivo, vasculhe o log do seu projeto SVN e obtenha a lista de autores automaticamente:

svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors.txt


A seguir, crie um novo repositório e defina os autores dos commits de acordo com o criado no arquivo acima.

mkdir repo && cd repo
git svn init http://server/svn/project/trunk --no-metadata
git config svn.authorsfile ~/authors.txt

Lembre-se que todos os autores de commits devem constar no arquivo, caso contrário o processo não irá funcionar. Em seguida, execute:

git svn fetch

Dependendo do tamanho do seu repositório, isso pode demorar um pouco.
Em seguida, é só adicionar as configurações do servidor e pronto!

git remote add origin [email protected]:path/repo.git
git push -u origin master

Uma coisa mais

Você também pode converter as propriedades do svn:ignore para um arquivo .gitignore. Para isso:

git svn show-ignore > .gitignore
git add .gitignore
git commit -m 'Convert svn:ignore properties to .gitignore.'
 

Leonardo

Registros de Leonardo Faria sobre desenvolvimento web

 
  • Americo C Coutinho

    Depois de git svn fetch onde vão parar os arquivos?
    tenho objectos em .git , mas não tenho arquivos em repo logo o git push não faz nada!
    onde estou errando?