0

I tried svn2git to test a migration from svn to git. My command looks like:

yes $PASS | svn2git https://my-svn.net/project/ --username $USERNAME

I execute this command on an Ubuntu 14.04 where git is installed. I perform this in /home/myuser/svn2git/. After some waiting the execution of the commands end:

    ...
    A   src/xx
    A   src/xx
    A   src/xx
    A   src/xx
W: Killed

When I perform ls -la in this directory it shows nothing. But du -sh is telling me there is 230 MB inside the directory.

How can I see my to git converted folders?

Cœur
  • 37,241
  • 25
  • 195
  • 267
DenCowboy
  • 13,884
  • 38
  • 114
  • 210

1 Answers1

-1

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.

The svn2git you use is based on git-svn and overcomes some of the drawbacks of git-svn, but most are still present.

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 svn2gits rule file to produce the result you want.

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:

  • the history is rebuilt much better and cleaner by svn2git (if the correct one is used), this is especially the case for more complex histories with branches and merges and so on
  • the tags are real tags and not branches in Git
  • with git-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 belong
  • if you changed layout in SVN you can easily configure this with svn2git, with git-svn you will loose history eventually
  • with svn2git you can also split one SVN repository into multiple Git repositories easily
  • or combine multiple SVN repositories in the same SVN root into one Git repository easily
  • the conversion is a gazillion times faster with the correct svn2git than with git-svn

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

Vampire
  • 35,631
  • 4
  • 76
  • 102
  • I will try to take a look. I've cloned and installed the prerequisites but the rulesset part seems maybe a bit difficult. I'm able to use an svn which is on another server? So using a URL? – DenCowboy Feb 08 '17 at 10:49
  • No, you need access to the SVN repository on the filesystem. Either run the conversion on the SVN server, or if you have filesystem access (e. g. via FTP, SFTP, SCP, SSH, ...) copy over the repository directory or if not use the method described in the docs of https://github.com/hartwork/svneverever to get a local copy. – Vampire Feb 08 '17 at 13:09
  • The rules files are acutally pretty easy to write, especially if you don't have special cases / layout. You can look at the KDE rulesets for examples. – Vampire Feb 08 '17 at 13:10