Re: help moving boost.org to git
- From
Erik Faye-Lund <kusmabite@googlemail.com>
- Date
- Jul 5, 2010, 14:48 UTC
- Message-ID
- <AANLkTinWnyB0C7HlyLz93lszfkWd81Y7reeWRpMNwHuv@mail.gmail.com>
- In-Reply-To
- <4C31E944.30801@boostpro.com>
On Mon, Jul 5, 2010 at 4:16 PM, Eric Niebler <eric@boostpro.com> wrote:
Show 16 quoted lines
> I have a question about the best approach to take for refactoring a > large svn project into git. The project, boost.org, is a collection of > C++ libraries (>100) that are mostly independent. (There may be > cross-library dependencies, but we plan to handle that at a higher > level.) After the move to git, we'd like each library to be in its own > git repository. Boost can then be a stitching-together of these, using > submodules or something (opinions welcome). It's an old project with > lots of history that we don't want to lose. The naive approach of simply > forking into N repositories for the N libraries and deleting the > unwanted files in each is unworkable because we'll end up with all the > history duplicated everywhere ... >100 repositories, each larger than 100Mb. > > So, what are the options? Can I somehow delete from each repository the > history that is irrelevant? Is these some feature of git I don't know > about that can solve this problem for us? >
You're probably looking for git-filter-branch. This tool can be used with the --subdirectory-filter option to filter out a specific subdirectory to it's own branch. Or if the project isn't split into subdirectories, you can use the --tree-filter option to filter specific files if you want.
See http://www.kernel.org/pub/software/scm/git/docs/git-filter-branch.html for details
-- Erik "kusma" Faye-Lund