Update: I tried to simplify the real example here to get a clear explanation of my options, but that didn't really work. The linked examples below so far are too general to get even this simple example working.
I was able to do this type of thing with SVN all the time and got quite skilled at it. Now I'm finding it extremely difficult in Git and starting to believe that my history is basically too munged together to be able to pull it apart.
Real world problem: I around a dozen files that have been moved and renamed. Their history is intermixed with the history of hundreds of other files for which I want to completely remove the history.
In SVN, I would be able to use a sequence of dump/include-filter/exclude-filter/load to get the repository trimmed down and rarely I might need to rename paths manually in the dump file itself before loading.
Something like this and I would have been done:
SET Includes=trunk/src/Foo.aaa trunk/src/Foo.bbb trunk/src/Foo trunk/src/Bar
SET Excludes=trunk/src/Bar/Blah.aaa trunk/src/Foo/Blah.aaa
svnadmin dump FooSrc > Full.dump 2> Dump.log
svndumpfilter include %Includes% --skip-missing-merge-sources --renumber-revs --drop-empty-revs < Full.dump > Filter_1.dump 2> Filter_1.log
svndumpfilter exclude %Excludes% --skip-missing-merge-sources --renumber-revs --drop-empty-revs < Filter_1.dump > Filter_2.dump 2> Filter_2.log
svnadmin create FooDest
svnadmin load FooDest --ignore-uuid < Filter_2.dump > Load.log 2> Load_Errors.log
Does anyone have a good example of this that is more than just a trivial removal of a single file or export of a single subdirectory?
The simplest way I can define the set of files is with a list of 7 directory paths. Everything inside of those directories is needing to be kept and everything outside needs to be pruned from the history.
Simplified problem:<