Subject: git-svn with big subversion repository

From: John Kristian <[email-masked]>
Date: Wed, 2 Mar 2011 02:43:23 +0000

How do you recommend using git to work with branches of a large, busy
subversion repository? In general, how can small teams use git for their
tasks, and use subversion to coordinate with a larger organization?

git-svn has some trouble, I find. For example, this tries to copy the entire
repo starting with revision 1:

git svn clone --stdlayout svn+ssh://server/repo/project

This would take weeks, I estimate for my subversion repository.

Choosing a subset of the repository enables git svn clone to cope, but then
git svn fetch will stall after processing a few revisions.  For example:

git svn clone --no-follow-parent --no-minimize-url \
 --branches=branches \
 --ignore-paths="^(?!branches/(TEAM_|RELEASE_))" \
 -r $BASE svn+ssh://server/repo/project
git svn fetch --no-follow-parent # stalls

I don't why it stalls. I guess it's doing something that requires processing
the entire subversion repository.

The best I can do is clone each subversion branch into a separate svn-remote
section of the .git/config file, for example:

git svn clone --no-follow-parent --no-minimize-url \
 --svn-remote=TEAM_FOO --id=TEAM_FOO \
 -r $BASE svn+ssh://server/repo/project/branches/TEAM_FOO
git svn fetch --no-follow-parent

The clone runs about as long as svn checkout, and the fetch replays the
later revisions briskly. Sadly, the relationship between branches isn't
fetched: git log won't tell me how a given subversion branch was copied from
another. I use svn for that.

I'm using git version 1.7.4, git-svn version 1.7.4 (svn 1.6.5), svn version
1.6.0 (r36650) and Mac OS X version 10.6.5. I got git from MacPorts.

- John Kristian