In my last post I mentioned how Git’s stash feature finally convinced me that it made sense in my subversion world. Well, once I was well underway on my new project, I’d reached the point where I was ready to commit version 0.1 to subversion. Googling for how to commit a Git project into Subversion will lead you to a few resources. The one that was spot on with a minor wrinkle was this post. I’ve taken what Brandon posted there and condensed it here with the update for the –root option for the rebase command.
Step 1: Create the project folder in svn with the recommended layout http://my.svnserver.com/repos/myproject http://my.svnserver.com/repos/myproject/trunk http://my.svnserver.com/repos/myproject/tags http://my.svnserver.com/repos/myproject/branches
Step 2: Backup your project’s git repo just in case. From within your project’s root directory run $ git branch master.bak master
Step 3: Link your git repo to the newly created svn location $ git svn init -s http://my.svnserver.com/repos/myproject $ git svn fetch
Step 4: Put all our commits onto the remote trunk repo $ git rebase –onto trunk –root master
Strp 5: Finally commit everything to subversion $ git svn dcommit
All git commits along with the commit history will make it to svn. Except the timestamp of the individual commits will not be preserved.