I would like to import a SVN repository into a GitHub Enterprise repository
There are many questions related to this matter and most of them can be addressed either with Git submodules or Git subtree.
In my case I have two repositories:
- The main project repository
- The modules repository (a big SVN repository over 2 GB)
This module repository has the following architecture:
foolib/
moduleA/
...
moduleB/
...
...
For the project, only few modules from foolib
are used as svn:externals
. For example this main project only uses moduleA
from foolib
.
As mentioned in this question one possible solution is to use sparse-checkout. I'm guessing Git subtree would also do the trick. Unfortunately it doesn't solve the main issue.
If my project is very small, as long as I get something from foolib
, even with sparce-checkout, I will retrieve the whole history of foolib
(e.g. 2 GB). This issue doesn't exist with SVN because an svn:externals
property only fetches what it needs, not the whole history.
I can imagine to do foolish things like recreating a local sparse repository dynamically using the commits listed in git log --follow foolib/moduleA
. But I assume this is not a good solution.
What would be the correct workflow to get a similar behavior in Git without having to fetch the whole history of foolib
everything I need only few modules?