Migrar projeto SVN para GIT com histórico

Publicado por: Vanderson da Silva
Postado: 11-10-2016
Atualizado:19-10-2016

#valide a o repositorio svn, usar a URL o caminho file:////d/repositorio/projeto e nao file:///d:/
svn ls <repositorio/projeto>

#Atenção o diretorio no SVN deve estar na estrutura trunk-branches-tags

#importanto o projeto SVN para o repositorio criado
git svn clone <ULR|file path SVN> <nome do diretorio a ser criado> -s

#Você precisa fazer um pouco de limpeza post-import. Por um lado, você deve limpar as referências estranhas que git svn configura.
#Primeiro você vai migrar as tags para que sejam tags reais, em vez de estranhos branches remotos, e então você vai migrar o resto dos branches de modo que eles sejam locais.
#Para migrar as tags para que sejam tags Git adequadas, execute

cp -Rf .git/refs/remotes/tags/* .git/refs/tags/
rm -Rf .git/refs/remotes/tags

#Isso leva as referências que eram branches remotos que começavam com tag/ e torna-os tags (leves) reais.
#Em seguida, importamos o resto das referências em refs/remotes para serem branches locais:

cp -Rf .git/refs/remotes/* .git/refs/heads/
rm -Rf .git/refs/remotes

#execute o comando abaixo para verificar a exitencia de repositorios remotos
git remote -v

#crie um repositório servidor para distribuir o fonte clonado do SVN
cd /d/<caminho_repositorio>/<nome_projeto>
git init --bare

#URL pode ser o caminho do repositorio Ex.: /d/repositorio/<nome-projeto>.git ou git@my-git-server:myrepository.git
git remote add origin <URL>

#Já que você quer que todos os seus branches e tags sejam enviados, você pode executar isto:
git push origin --all

Categoria: GIT - SVN