Scripts and data used to migrate GMOD projects from svn on SourceForge to git on GitHub
Perl Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


GMOD Sourceforge-to-Github Repository Migration

This repository holds scripts and data related to migrating GMOD source code repositories from Sourceforge to GitHub.

Files in this repository

Inspects the current author log, the svn history, and account information from SourceForge and GitHub to update the author list.

Shell script that rsyncs the whole GMOD svn repo to svn_mirror/ in the current dir, for use by migration scripts.

Conversion Process

The process to convert a repo from SourceForge's SVN to git on GitHub goes roughly as:

Set up a work directory for converting

  mkdir gmod_git;
  cd gmod_git;
  git clone

Update your local mirror of the GMOD svn

Use rsync to fetch a mirror of the entire GMOD svn (about 1.6 GB on disk, but transfer is compressed):

  cd gmod_svn_migration;

Optionally update the authors.txt file

The authors.txt file just gives the mapping of SourceForge user names to full names and emails, since the git commit history keeps that information.

Run the updater:


And then look over the authors.txt file manually to make sure the updater made good choices for names and emails. Make any necessary manual corrections. Use git diff and git commit to check and commit any changes.

Convert a repository using svn2git

Use svn2git, available at or via gem install svn2git --source, along with the local SVN mirror and the authors.txt file to convert a GMOD project's svn repo to git.

Make a directory for the project you are converting, make sure it is not under the gmod_svn_migration/ directory. We'll use GBrowse as an example here.

  cd ..
  mkdir Generic-Genome-Browser
  svn2git --authors /home/rob/gmod_git/gmod_svn_migration/authors.txt \

After the conversion runs, if all goes well, you should now have a full git repository in that directory for the project in question. Examine it in the usual git way.

  git log --stat
  git status
  # etcetera ...