We are trying to migrate from svn to git using svn2git utility (https://github.com/nirvdrum/svn2git). The utility seems to fail every time with below error. If anyone has seen the same error or have any better alternatives, please share.
command
svn2git https://xyz.xyz.com/svn/svnrepo/ --verbose --authors authors.txt
console output
Running command: git svn init --prefix=svn/ --no-metadata --trunk='trunk' --tags
='tags' --branches='branches' https://xyz.xyz.com/svn/svnrepo/
Running command: git config --local --get user.name
Running command: git config --local svn.authorsfile authors.txt
Running command: git svn fetch
Running command: git branch -l --no-color
Running command: git branch -r --no-color
Running command: git config --local --get user.name
Running command: git config --local --get user.email
Running command: git checkout -f master
error: pathspec 'master' did not match any file(s) known to git.
command failed:
git checkout -f master
P.S. My SVN repo URL is correct too, it's just above the trunk. I am trying this on Win7 64-bit machine.
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 thatsvn2git
tool. It is the best I know available out there and it is very flexible in what you can do with its rules files.The
svn2git
tool you used is based ongit-svn
andgit-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 usegit-svn
, butsvn2git
which is much more suited for this use-case.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
(or the wrongsvn2git
in your case) is easier to start with, here are some further reasons why using the KDEsvn2git
instead ofgit-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 normalfetch
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
, withgit-svn
you will loose history eventuallysvn2git
you can also split one SVN repository into multiple Git repositories easilysvn2git
than withgit-svn
There are many reasons why
git-svn
is worse and the KDEsvn2git
is superior. :-)