Migrar Subversion para Git

As instruções básicas de migração do Subversion para o Git são cobertas pelo livro (gratuito) Pro Git .

Resumindo, você construirá um arquivo mapeando o nome de usuário do Subversion para o nome completo e e-mail do usuário. Então, você irá obter todas as revisões, tags e branches do Subversion (usando git svn clone), criar tags Git apropriadas a partir das “tags” do Subversion (na verdade: branches) e enviar tudo para um remoto Git.

Até agora, migrei cerca de 10 repositórios de subversão para Git. Algumas delas foram “pelo livro” e a migração foi bem tranquila. No entanto, com cerca de metade deles, o repositório Subversion foi de alguma forma bagunçado, fazendo com que git-svnnão se criasse pastas, refs/remotes/tagsmas em vez disso, mantinham pastas especiais de tags Subversion refs/svn/root/tags.

Felizmente, essas pastas compartilham o nome da tag. Se você não se preocupa com as informações de commit da tag Subversion (ou seja, quem criou a tag, por que e quando) você pode usar essas tags diretamente para criar tags Git.

git tag [tag-name] tags/[tag-name]

Se você tiver um monte de tags, é fácil fazer um loop.

for tag in .git/svn/root/tags/*; do
name=`basename $tag`

git tag $name tags/$name

done

A maioria das tags são tags de lançamento, então o nome da tag fala por si mesmo e quem criou a tag realmente não importa. E o último commit na tag é uma aproximação boa o suficiente de quando a tag foi criada.