Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

converting svn repo to git using reposurgeon

Tags:

git

svn

svnadmin

I am trying to convert an svn repo to git using reposurgeon.

Here is what I did ( have a repo.map file that has the svn name -> git name mapping):

svnadmin dump /home/subversion > repo.svn
reposurgeon "verbose 1" "repo.svn" "authors read" "write repo.fi"

reposurgeon runs for many hours (lots of swapping as it is a 12GB dump file), and everything looks good. Here is the output I get:

    reposurgeon: verbose 1
    reposurgeon: from repo.svn...copynodes+filemaps+copysets+commits+branches+parents+root+branchlinks+svn-mergeinfo+tagifying+tagify-empty+polishing+canonicalizing+resets+debubbling+renumbering+14163 revisions (1/s)...(9810.18 sec) done.
reposurgeon: r13: deleting parentless zero-op commit.
.
.
.
reposurgeon: r13726: deleting parentless zero-op commit.
    2012-12-24T01:16:23Z * repo.svn

At this point reposurgeon just sits. I'm not sure where to look for a solution at this point, as it never actually gives me an error message. Any suggestions are most welcome.

like image 269
Daniel Jacobs Avatar asked Dec 24 '12 04:12

Daniel Jacobs


2 Answers

It's successfully imported the repository, but then it goes to process the authors read command, but you didn't specify a file. At this point it's actually waiting for the file to appear on stdin. Use authors read <author-map where author-map is the name of the file containing the map.

You'll also want to change the write command to write >repo.fi, for similar reasons.

like image 52
db48x Avatar answered Sep 30 '22 10:09

db48x


If you would consider an alternative to reposurgeon and git-svn, have a look at SubGit.

$ subgit configure /home/subversion
#edit /home/subversion/conf/subgit.conf to set 'core.authorsFile' option to path to "repo.map" file
$ subgit install /home/subversion
$ subgit uninstall --purge /home/subversion

The converted repository will be in /home/subversion/.git directory. As a bonus, you'll have all svn:ignore and svn:eol-style properties converted to their Git analog.

Usually SVN repository is about 4x more compact than a corresponding dump file, so the conversion of the original repository can be faster than dump-based conversion.

like image 29
Dmitry Pavlenko Avatar answered Sep 30 '22 10:09

Dmitry Pavlenko