When trying to migrate an svn repository with 50k+ commits to git using the following commands:
git init
git svn init https://10.10.10.10:8443/svn/rep --stdlayout
git svn fetch --fetch-all --log-window-size=1000 --authors-file=..\authors-transform.txt
the following error is reported:
Connection reset by peer: Error running context: Connection reset by peer at /mingw64/share/perl5/site_perl/Git/SVN/Ra.pm line 312.
I've already tried to fetch again, but the error persists.
Any help would be appreciated.
For a one-time migration git-svn
is not the right tool for conversions of repositories or parts of repositories. 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 plenty 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 be easily able to configure svn2git
s rule file to produce the result you want from your current SVN layout and you can also tell it to keep empty directories by giving it a commandline option that causes it to put empty .gitignore
files in the directories to keep them.
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:
svn2git
(if the correct one is used), this is especially the case for more complex histories with branches and merges and so ongit-svn
the tags contain an extra empty commit which also makes them not part of the branches, so a normal fetch
will not get them until you give --tags
to the command as by default only tags pointing to fetched branches are fetched also. With the proper svn2git tags are where they belongsvn2git
, with git-svn
you will loose history eventuallysvn2git
you can also split one SVN repository into multiple Git repositories easilysvn2git
than with git-svn
You see, there are many reasons why git-svn
is worse and the KDE svn2git
is superior. :-)