gitsvnmigrationgit-svnversion-control-migration

How to import svn branch to git with trunk history


This is the svn trunk path:

http://svn/path/libs/trunk/mylib

And here is the branch path:

http://svn/path/libs/branches/mylib/mylib-feature-branch

I need to migrate only the branch to git, but I also need its trunk history before the branch was created.

The following command fetches only the branch history:

git svn clone http://svn/path/libs/branches/mylib/mylib-feature-branch

I have read this answer, but could not figure out how I should change the git svn clone command to have the full history of the branch.


Solution

  • git-svn is not the right tool for one-time conversions of repositories or repository parts. It is a great tool if you want to use Git as frontend for an existing SVN server, but for one-time conversions you should not use git-svn, but svn2git which is much more suited for this use-case.

    There are pleny tools called svn2git, the probably best one is the KDE one from https://github.com/svn-all-fast-export/svn2git. I strongly recommend using that svn2git tool. It is the best I know available out there and it is very flexible in what you can do with its rules files.

    You will easily be able to set up the rules file so that exactly your branch and its history will get migrated.

    If you are not 100% about the history of your repository, svneverever from http://blog.hartwork.org/?p=763 is a great tool to investigate the history of an SVN repository when migrating it to Git.


    Even though git-svn is easier to start with, here are some further reasons why using the KDE svn2git instead of git-svn is superior, besides its flexibility:

    There are many reasons why git-svn is worse and the KDE svn2git is superior. :-)