Subject: Re: [PATCH] git-filter-branch: add --egrep-filter option

From: Michael O'Cleirigh <[email-masked]>
Date: Sat, 16 Apr 2011 21:45:50 -0400

Hi Johannes,

Thanks for commenting on this patch.

> On Samstag, 16. April 2011, Michael O'Cleirigh wrote:
>> The --subdirectory-filter will look for a single directory and then rewrite
>> history to make its content the root.  This is ok except for cases where we
>> want to retain history of those files before they were moved into that
>> directory.
>>
>> The --egrep-filter option allows specifying an egrep regex for the files in
>> the tree of each commit to keep.  For example:
>>
>> Directories we want are A, B, C, D and they exist in several different
>> lifetimes.  A and B exist sometimes together then B and C and finally then
>> D.
>>
>> e.g. git-filter-branch --egrep-filter "(A|B|C|D)"
>>
>> Each commit will then contain different combination's of A or B or C or D
>> (up to A and B and C and D).
> Why do you need a new --...-filter option for this? Your implementation is
> merely an instance of an --index-filter, and at that a very specialized one,
> which operates only at the top-most directory level.
>

At work we needed to split out 2 more modules from a 1400 revision 
repository that we imported from subversion.

Each had been originally created under different names at the top level 
and then only recently moved into a more logical single directory per 
project structure.  When we first ran filter-branch with the 
--subdirectory-filter we only had 6 commits instead of the 100 commits 
we ended up with after using the --egrep-filter method.

I tried a tree-filter first but it was slow and then the same method as 
an index filter was slower (I would search for the paths that didn't 
match the filter (egrep -v "pattern") and then remove each of them).

By using this egrep-filter option it only took 5 minutes per repo vs >8 
hours for the tree-filter approach.

I posted to the list incase it might be useful to others;  But I didn't 
really know if it would be useful or not.

After considering your comment I have to agree with you that it is a 
special case of index-filter and probably not useful/general for enough 
other cases to justify adding in a new command line option.

Regards,

Mike