Subject: Re: How to remove a git subtree and its history?

From: Robert Pollak <[email-masked]>
Date: Wed, 23 Mar 2011 10:01:40 +0100

Am 22.03.2011 21:44, schrieb Avery Pennarun:
> On Tue, Mar 22, 2011 at 6:19 AM, Robert Pollak <[email-masked]> wrote:
>> in the git repository of my project I have successfully replaced a git
>> submodule by a subtree, essentially by using
>>
>> $git subtree add --prefix=mySubtree mySubmodule/master
>>
>> with your git-subtree.sh .
>>
>> Before accepting my change, my project partners want to be sure that
>> removing this new subtree and its history at some later point in time
>> stays possible. How can I achieve this? I have unsuccessfully tried "git
>> filter-branch" as described by pgs and fmarc in
>> http://stackoverflow.com/questions/955793#955793 .
> 
> Well, you can certainly remove anything you want with git
> filter-branch.  Are you concerned about shrinking the size of your
> repo, or just getting files out of the way in your tree, or removing
> stuff from the git history?
> 
> If you want to avoid cluttering the git history, you should use git
> subtree with the --squash option.  That makes it quite painless.
> 
> If you want to just get the files out of your tree someday in the
> future (for example, to switch back to submodules), then simply 'git
> rm -r' the directory.  Rewriting history is massive overkill for this.
> 
> If you want to be able to shrink your repository size later, well,
> then you need git filter-branch.

Yes, I am aware of the other options and that's what I want to do.
(I never really want to use this, I only need a test run to convince my
partners to switch to git-subtree.)

> I've never tried to do this since
> the history rewrite you'd be doing in this case would completely
> invalidate all your old history: by removing the subtree in all past
> revisions, you make all those past revisions unbuildable, which seems
> like missing the point of version control.  Nevertheless, I'm sure you
> could make it happen if you wanted; you can do pretty much anything
> you want by filtering git history.

I see. As quite a git newbie I hoped you had done this already and could
help me with the necessary git filter-branch command line.

>> (Be free to CC [email-masked] if you reply, if you think that's
>> appropriate for archiving the info.)
> 
> I don't understand why you didn't cc: the git list yourself then.  But okay :)

I was not sure whether discussion of git-subtree belongs there, since it
is not part of git (yet?).

> Have fun,

I certainly do!

Thank you,
Robert