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