After Galapix and Windstille, Pingus is now the third project I converted from SVN to Git in short order. Pingus took noticeably longer to convert, even so the repository isn't much larger, but it contains more branches, tags and a bit more history. svn2git seems to have performed well again. There was a bit more cleanup I had to do this time around, as some of the resulting tags, going back to CVS days. Essentially there where two kinds of tags again:
In this case the 'foobar' tags would point to an empty commit created by cvs2svn that would branch of from the main tree, while the foobar@234 would point to the actual position in the main tree. A bit of "git tag -d foobar", "git tag foobar foobar@234" and "git tag -d foobar@234" fixed that easy enough.
Another problem that popped up during the conversion where old tags and branches that I want to keep for historic purpose, but that don't play any role in active development. In SVN one could simply delete those and it would be fine, as they would stay in the SVN history. With Git that is not possible, branches and tags are unversioned in Git and when one deletes them they are gone for good, including the source code to which they pointed. To work around that I converted the branches to tags:
git tag archive/branches/foobar foobar
git branch -d foobar
This way the code to which the branches pointed are still around and can be converted back to a branch via a simple checkout. The old stuff still shows up in "git tag", but as one uses that command a lot less then "git branch", it's not really a problem. The process for the obsolete tags was the same, I moved them to archive/tags/.
I also did a bit of normalization with the release tags, which game in numerous different forms, such as release_0_1_0 or pingus-0.7.2. I renamed them to the semantic versioning scheme, i.e. "v0.7.0".
Final repository is available at:
The few subprojects floating around in the old SVN trunk/ will be converted in the coming days, some of them probably ending up on GitHub instead of in the Pingus repository, as they are not all that Pingus specific.