I am working on doing a migration from SVN to Git. I have already used git-svn
to get the history into a single git repository, and I already know how to use git-subtree
to split that repository into smaller ones. This question is not about how to do the migration, it is about when to split and when not to split.
I want to split the large repository because some of the directories are self-contained libraries that are also shared with other projects. Previously an svn checkout
was done on the library without the need to checkout the entire project. During all of this I discovered that there are probably dozens of directories that make sense to be in their own repository because they are 1) independent and 2) shared across projects.
Once you get above a handful of git repositories, it seems prudent to use a tool that makes working with many repositories easier. Some examples are Google's repo
, git submodules
, git subtree
, and creating a custom script (it appears that chromium does this). I have explored these various methods, and understand how to use them.
So the question is about direction for the transition from subversion.
Should I try and stick to one large git repository, only splitting it into smaller pieces when absolutely necessary or should I split it into dozens or potentially hundreds of smaller repositories? Which would be easier to work with? Is there another solution that I have missed? If going with the many repositories, which tool should I use? What factors will make someone favor one method over another?
Note: The source needs to be checked out on Windows, MacOS, and Linux.