How do I migrate a flat svn repo to git repo?

Has anyone studied the opportunity cost of using SVN versus training engineers to use Git in a medium-size org?

  • Many software companies are stuck using svn, with all it's shortcomings and pain points, because of concerns of the cost of migrating and training engineer to use Git.  I'm curious whether anyone out there has some first hand experience doing such a migration in a medium size software org (20-50 engineers).

  • Answer:

    I am one of SubGit (http://subgit.com/) tool developers. Despite I do not have large company Svn to Git migration first hand experience, SubGit is a tool we develop exactly to address concerns like yours. SubGit offers safe and smooth migration and may reduce explicit and implicit expenses by keeping both Subversion and Git enabled as long as migration lasts. The advantages of the parallel Git repository approach are: A way back. Not all companies that planned Git migration switched to it finally. Keeping SVN repository operational allows to rollback the migration and stay on the original infrastructure by just shutting down the parallel Git repository. Smoothness. All work-flows in which Subversion is involved are still operational, it is possible to switch them to Git step-by-step without interruption. Though, actually, the work-flows can still use Subversion allowing to rollback, and developers can use Git. Developers who prefer SVN, can still use SVN. Those advantages are common for solution for keeping a parallel Git repository in sync. But the main advantages of SubGit as synchronization solution: Concurrency handling. If someone pushes to Git and another one to SVN at the same time changes to the same file. This situation should be correctly processed. That's one of the reasons we call that safe migration. Transparent concepts translation. SVN ignores are translated to Git ignores, SVN tags to Git tags, the same about full branch merges, commit authors, commit dates, anonymous commits, EOL-handling properties and so on. No other Git<->SVN bridge proposes these concepts translation in both directions. Reusing the same infrastructure. Physically SubGit is installed into existing SVN repository (the directory with the repository, but invisible for the SVN repository itself), the same Apache server may be reused to provide access to the Git repository and it can be backed up with "svn hotcopy" command that is usually used to back up an SVN repository, though we're working on our own backup tool. Not based on git-svn as the most of the other bridges. git-svn is a large Perl script  of thousands of LoCs and a lot of drawbacks (doesn't allow to keep Git submodules, doesn't send  commits from anonymous branches and  so on). Every day there's a new question on StackOverflow "why doesn't git-svn work in my particular case?". We've just released RC1 version of SubGit, so did not yet gather enough of customers stories, but we're more than satisfied by our own SubGit experience - some people in our team use Git and some - Subversion and translation is transparent.

Dmitry Pavlenko at Quora Visit the source

Was this solution helpful to you?

Other answers

Before make this migration ask yourself. Everyone in company understand concept of Revision Control System? If you have some people who are not confortable with SVN it will be worse with GIT and migration can fail. The cost of changing SVN to GIT is not expensive. Server is easy to deploy, migration tools are good. Hidden cost can be on deployment and build process if they are not compatible.

Julien Duponchelle

Related Q & A:

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.