Reputation: 33
For years, we have used SVN for our repository, and we want to migrate to Git.
In 2015 someone made a change in one of our repositories.
He made a separate folder in the repository (with an subfolder), on the same folder hierarchical level like /trunk
, /branch
and /tags
. (see projectA)
svnroot/
|-- projectA
|-- branches
|-- tags
|-- trunk
|-- new folder
|-- subfolder
|-- branches
|-- tags
|-- trunk
|-- projectB
|-- branches
|-- tags
|-- trunk
|-- projectC
|-- branches
|-- tags
|-- trunk
He has moved some parts from /trunk
and other folders to this new folder.
When I now look in the history of the new folder, I see only the history since the new folder was created, but the history of the moved projects in the new folder seems to be complete.
Did I need to fix it in SVN before migration, and if this is needed how can I fix this?
Or must I do something special on migration?
Upvotes: 2
Views: 5394
Reputation: 38639
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 be easily able to configure svn2git
s rule file to produce the result you want with your history, either with integrating all SVN sub-repos in one Git repo, or splitting your projects from SVN to multiple independent Git repositories.
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
There are many reasons why git-svn
is worse and the KDE svn2git
is superior. :-)
Upvotes: 1