Simple SVN to Git repository migration

Recently I wanted to migrate an existing Subversion (SVN) repository trunk to a new Git repository. Here is a short description how you can do it in four simple steps.

First of all, create a new bare repository:

$ mkdir NewGitRepo
$ cd NewGitRepo/
$ git init --bare

Secondly, checkout the old SVN repository using Git and enter the repository folder. For this post I created a sample SVN repository on my local hard drive:

$ git svn clone file:///some/file/path/OldSVNRepo/trunk ./OldSVNRepoGit
$ cd OldSVNRepoGit

Thirdly, add your new Git repository as additional remote branch to the checked out SVN repository:

 $ git remote add origin /some/file/path/NewGitRepo/

Finally, push SVN contents to new Git bare repository:

$ git push -u origin master
Counting objects: 12, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (12/12), 1016 bytes, done.
Total 12 (delta 3), reused 0 (delta 0)
Unpacking objects: 100% (12/12), done.
To /some/file/path/NewGitRepo/
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

As stated in the heading, this is just a simple way. Additional information regarding this topic can be found in the Pro Git book by Scott Chacon:

http://git-scm.com/book/en/Git-and-Other-Systems-Migrating-to-Git

Leave a Reply