Recently I needed to convert the ooo-build repository from the Gnome SVN to git, and also create a regularly updated git mirror of the OpenOffice.org SVN repository. Unfortunately I did not find a tool that would suffice my needs - git-svn was unable to handle more branches, and svn-all-fast-export had a Qt4 dependency that made it problematic to even compile, not to mention the syntax of the repository description file(s) that I did not really understand - so I decided to create a new tool based on svn-fast-export.c:
http://cgit.freedesktop.org/ooo-build/contrib/svn-to-git
I made it for our needs, so there is just a simple Makefile, the code might be hacky here and there [and is C++ ;-)], but it seems to work really well - at least for us :-)
Features:
- perfect import of trunk (master), branches and tags
even when you svn cp things around like svn cp branches/blah/bleh trunk/foo/bar
when there are commits to the tags - change login names to real names and email addresses
- converts ChangeLog-like commit messages to git-like
(optionally) - allows you to split one SVN tree to multiple git trees
(based on regexps) - allows you to convert leading tabs to spaces in files you choose
(fixes a terrible pain in the OOo sources where tab is set to 4 spaces, and leading tabs and spaces are combined in nearly every source file!) - allows you to ignore broken tags/commits
- and is really fast
the OOo SVN with ~270000 commits in < 1hr on the right H/W ;-)
Documentation is a bit lacking, but basically you need to create one file containing the description of the repositories, and one with the names/emails of the svn login names, and you are ready to start ./svn-to-git.sh. Description files I used for the ooo-build and OOo conversions are included.
So - if you are interested, and have a SVN repository to convert, give it a try. And if you have patches, please send them to me :-)
No comments:
Post a Comment